Admin上的REST如何设置列表元素的路径

时间:2017-05-08 18:15:31

标签: admin-on-rest

我是REST的管理员新手。 我对/users的回答就像这样:

{
  "status": 200,
  "response": {
    "data": [
      {
        "id": 298487355,
        "login": "000000000053"
      },
      ...
    ]
  }
  "error": "text error"
}

如何设置responsedata[...]的路径以获取用户列表? 感谢

2 个答案:

答案 0 :(得分:2)

您可以自定义您的restClient。例如,我选择使用jsonServer,所以我在app.js

中有这个
import customRestClient from './customRestClient'
const App = () => (
    <Admin restClient={customRestClient('http://path.to.my.api/')}>

customRestClient实际上是this文件,我将其带到我的来源,调整导入。

此文件是您的数据来自您的应用程序到您的API的点。

所以在convertHTTPResponseToREST功能中,您只需查看resource,如果是users,您就可以访问自己的数据 json.response.data并将其返回switch

答案 1 :(得分:0)

非常感谢@pelak。 我只是根据你的答案编写代码。

在自定义restClient指出响应数据的路径。

const convertHTTPResponseToREST = (response, type, resource, params) => {
    const { headers, json } = response;
    switch (type) {
        case GET_LIST:
        case GET_MANY_REFERENCE:
            if (!headers.has('content-range')) {
                throw new Error(
                    'The Content-Range header is missing in the HTTP Response. The simple REST client expects responses for lists of resources to contain this header with the total number of results to build the pagination. If you are using CORS, did you declare Content-Range in the Access-Control-Expose-Headers header?'
                );
            }
            // IF you just want use with **users** resource.
            if(resource === 'users') {
                return {
                    data: json.result,
                    total: parseInt(
                        headers
                            .get('content-range')
                            .split('/')
                            .pop(),
                        10
                    ),
                };
            }
            return {
                data: json.result,
                total: parseInt(
                    headers
                        .get('content-range')
                        .split('/')
                        .pop(),
                    10
                ),
            };
        case CREATE:
            return { data: { ...params.data, id: json.id } };
        default:
            return { data: json };
    }
};

关键字:子元素列表,列表嵌套