当 API 的响应状态未经授权时,我需要重定向到登录屏幕并清除身份验证令牌。
我可以通过向模块提供 HTTP 拦截器来轻松地在 Angular 中完成此操作,因此我正在 React 中的 RTK 查询中寻找等效项。
有没有办法通过RTK查询添加全局拦截器?或者用于响应一组查询的拦截器?
我想过使用
transformResponse
字段实现执行上述操作的逻辑,但在那里这样做似乎并不正确,我必须将函数调用添加到每个 transformResponse
回调的主体中。
您可以通过包裹您的
fetchBaseQuery
来做到这一点。文档中有一个用于重新授权的示例:
const baseQuery = fetchBaseQuery({ baseUrl: '/' })
const baseQueryWithReauth: BaseQueryFn<
string | FetchArgs,
unknown,
FetchBaseQueryError
> = async (args, api, extraOptions) => {
let result = await baseQuery(args, api, extraOptions)
if (result.error && result.error.status === 401) {
// your logic here
}
return result
}