如何在react-admin中动态添加请求头?

问题描述

我使用的是 react-admin,我的数据提供者是 simpleRestProvider。 我需要根据用户行为向请求动态添加标头。

有可能吗?

谢谢:)

解决方法

是的,这是可能的。插入 react-admin 管道的一个非常方便的地方是传递给 dataProvider 的 httpClientAlso shown in the docs

    import { fetchUtils,Admin,Resource } from 'react-admin';
    import simpleRestProvider from 'ra-data-simple-rest';

    const httpClient = (url,options = {}) => {
        if (!options.headers) {
            options.headers = new Headers({ Accept: 'application/json' });
        }
        const { token } = JSON.parse(localStorage.getItem('auth'));
        options.headers.set('Authorization',`Bearer ${token}`);
        return fetchUtils.fetchJson(url,options);
    };
    const dataProvider = simpleRestProvider('http://localhost:3000',httpClient);

编辑:如果您想在每次 dataProvider 调用时动态传递标头,我想您将不得不修改 a 的实现 dataProvider 目前 ra-data-simple-rest package 不会通过接收 options 参数将其传递给 httpClient 而是在内部创建它。您不必从头开始构建它 - 只需 fork 存储库并创建一个增强版本即可。