创建自定义休息客户端admin-on-rest

时间:2017-06-25 09:46:03

标签: admin-on-rest

我没有寻求帮助我只是认为自定义json-server实现有问题。 我正在使用:" admin-on-rest":" ^ 1.1.0"

这是我的App.js:

...
import restClient from './restClient';

const App = () => (
  <Admin
    title="Glasses"
    dashboard={Dashboard}
    menu={Menu}
    restClient={restClient}
    authClient={authClient}
  >
    <Resource name="products" list={ProductList} />
  </Admin>
);

restClient.js文件是https://github.com/marmelab/admin-on-rest/blob/master/src/rest/jsonServer.js的副本我只是改变了这样的导入路径:

import {
  GET_LIST,
  GET_ONE,
  GET_MANY,
  GET_MANY_REFERENCE,
  CREATE,
  UPDATE,
  DELETE,
  fetchUtils
} from 'admin-on-rest';

const { queryParameters, fetchJson } = fetchUtils;
...

其余的restClient.js是一个接一个的,就像在git&#34; jsonServer.js&#34;。

当我点击&#34;产品&#34;在我的菜单中,我收到了一条通知:&#34; REST响应必须包含一个数据密钥&#34;并在控制台中:&#34;警告:缺少密钥翻译:&#34; REST响应必须包含数据密钥&#34;

现在看起来服务器似乎没有返回&#34;数据&#34;响应中的对象但问题是没有偶数请求!当我去我的&#34;网络&#34;标签(在Chrome控制台中过滤到所有网络)我没有看到任何API请求,以便如何收到此类错误?

我添加了&#34; console.log&#34;到我的restClient.js文件(jsonServer.js)底部的这段代码的第一行:

return (type, resource, params) => {
    console.log('test'); // THIS WHAT I ADDED
    // json-server doesn't handle WHERE IN requests, so we fallback to calling GET_ONE n times instead
    if (type === GET_MANY) {
      return Promise.all(params.ids.map(id => httpClient(`${apiUrl}/${resource}/${id}`)))
        .then(responses => ({ data: responses.map(response => response.json) }));
    }
    const { url, options } = convertRESTRequestToHTTP(type, resource, params);
    return httpClient(url, options)
      .then(response => convertHTTPResponseToREST(response, type, resource, params));
  };

但&#34;测试&#34;没有打印到控制台。

有什么建议吗?我做错了吗?

可以提供帮助的视频:https://nimbus.everhelper.me/client/notes/share/982310/35f8rwpu6qohrftn8h1h restClient.js文件:http://pasted.co/2024e00f

先谢谢你。

利奥。

1 个答案:

答案 0 :(得分:3)

所以我的错误是在没有URL的情况下在Admin组件中声明了restClient属性。

这是正确的方法:

const App = () => (
  <Admin
    title="Express Glasses"
    dashboard={Dashboard}
    menu={Menu}
    restClient={restClient('http://UrlToApi.com/api')}
    authClient={authClient}
  >
    <Resource name="products" list={ProductList} />
  </Admin>
);