当API的响应状态未经授权时,我需要重定向到登录屏幕并清除身份验证令牌
我可以通过向模块提供HTTP拦截器,在Angular中轻松完成这项工作,因此我正在React中的RTK Query中寻找等效的拦截器
是否有办法通过RTK查询添加全局拦截器?还是一个用于响应一组查询的拦截器
我曾想过使用transformResponse
字段来实现上述逻辑,但在那里执行似乎不对,我必须将函数调用添加到每个transformResponse
回调的主体中。
您可以通过包装fetchBaseQuery
来实现这一点。文档中有一个用于重新授权的示例:
通过扩展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
}