首页 > 解决方案 > 在 React Admin 中使用自定义标头处理 HttpError

问题描述

我正在使用此处指定的自定义标头:

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);

(此示例也失败了,因为未设置 DELETE 标头,如此处所报告但我相信这是另一个问题)

当 API 以错误代码和 JSON: 响应时{status:500, message:"Internal error"}fetchUtils给出源代码PromiseHttpError所见的。

我得到了正确的通知,我的理解是HttpError应该处理,AuthProvider - checkError但这永远不会发生,并且 React-Admin 抛出Unhandled Rejection (HttpError)指向fetchUtils.

这是我的checkError

checkError: (error) => {
    const status = error.status;
    if (status === 401 || status === 403) {
      localStorage.removeItem("jwt");
      localStorage.removeItem("permissions");
      return Promise.reject();
    }
    return Promise.resolve();
  }

我在这里想念什么?

标签: react-adminhttp-error

解决方案


推荐阅读