Проблема с прокси "admin-admin" с dataProvider - PullRequest
0 голосов
/ 28 июня 2018

Моя сборка запущена на моем локальном хосте. У меня есть dataProvider, работающий должным образом со всеми стандартными представлениями с использованием https (то есть «Показать», «Создать»). Я хочу создать данные из функции, подобной этой:

import { CREATE, GET_ONE, UPDATE } from 'react-admin';
import dataProviderFactory from '../dataProvider';

dataProviderFactory(
  process.env.REACT_APP_SERVER_HTTPS_URL
).then(dataProvider => {
  dataProvider(CREATE, 'batches', {
    data: {
      name: "test"
    }
  })
  .then(response => response.data)
  .then(data => {
    console.log('data', data);
  });
});

Точно такой же POST в «пакетах» сущности работает из стандартного шаблона «create» реакции-admin, но с этой функцией происходит сбой. Похоже, что он пытается прокси для «localhost» вместо поддержания URL-адреса корневого API. Есть ли какой-то другой способ, которым мне нужно либо извлечь dataProvider из контроллера администратора, либо я могу указать корневой URL-адрес прокси-сервера для dataProvider?

dataProvier.js:

export default type => {
    return import('./rest').then(provider => provider.default);
};

rest.js:

import simpleRestProvider from 'ra-data-simple-rest';
import Constants from "../constants/Constants";
import { fetchUtils } from 'react-admin';
import SimpleRestClient from '../utils/SimpleRestClient';
import AppConfig from '../AppConfig';

const httpClient = (url, options = {}) => {
  if (!options.headers) {
    options.headers = new Headers();
  }
  if(!url.endsWith("/authenticate") && localStorage.getItem('token') !== null) {
    options.user = {
      authenticated: true,
      token: 'Bearer ' + localStorage.getItem('token')
    }
  }
  return fetchUtils.fetchJson(url, options);
}

// Use custom rest client. For fakeserver use react admin rest client
const restDataProvider = !AppConfig.useFakeServer ? SimpleRestClient(Constants.urls.apiBaseUrl, httpClient) :
  simpleRestProvider(Constants.urls.apiBaseUrl, httpClient);

export default (type, resource, params) =>
  new Promise(resolve => {
      if (!AppConfig.useFakeServer) {
        setTimeout(() => resolve(restDataProvider(type, resource, params)), 500);
      } else {
        resolve(restDataProvider(type, resource, params));
      }
    }
  );
...