问题描述
我是 React 新手,我的仪表板使用 react-admin。但是我在从我的 API 获取数据时遇到问题。
这是我的 API:
http://localhost:3333/verifications/browse?page=1&per_page=10&verification_level_id=2&verification_status_id=3
然后我看到了 react-admin 使用的端点,
http://localhost:3333/verifications/browse?filter=%7B%7D&range=%5B0%2C9%5D&sort=%5B%22id%22%2C%22ASC%22%5D
如何更改该端点?
解决方法
在请求发送前(以及收到后的响应)修改请求的地方是dataProvider。 React-admin 有 extensive documentation about it。如果你不了解 react-admin 中的 dataProviders,你会遇到很多拦截器,所以这应该是你的起点。
我相信您正在使用 ra-data-simplerest 作为示例的基础(或者是其他什么?),您可以根据以下内容将 getList
覆盖为更适合您需要的内容实施:
import { fetchUtils } from 'react-admin';
import { stringify } from 'query-string';
import simpleRestDataProvider from './simpleRestDataProvider';
const apiUrl = 'https://my.api.com/';
const httpClient = fetchUtils.fetchJson;
const dataProvider = {
...simpleRestDataProvider,getList: (resource,params) => {
const { page,perPage } = params.pagination;
const { field,order } = params.sort;
const query = {
sort: JSON.stringify([field,order]),range: JSON.stringify([(page - 1) * perPage,page * perPage - 1]),filter: JSON.stringify(params.filter),};
const url = `${apiUrl}/${resource}?${stringify(query)}`;
return httpClient(url).then(({ headers,json }) => ({
data: json,total: parseInt(headers.get('content-range').split('/').pop(),10),}));
},}