如何在RTK查询中制作响应拦截器

问题描述 投票:0回答:1

当 API 的响应状态未经授权时,我需要重定向到登录屏幕并清除身份验证令牌。
我可以通过向模块提供 HTTP 拦截器来轻松地在 Angular 中完成此操作,因此我正在 React 中的 RTK 查询中寻找等效项。
有没有办法通过RTK查询添加全局拦截器?或者用于响应一组查询的拦截器?
我想过使用

transformResponse
字段实现执行上述操作的逻辑,但在那里这样做似乎并不正确,我必须将函数调用添加到每个
transformResponse
回调的主体中。

reactjs react-native react-redux rtk-query
1个回答
3
投票

您可以通过包裹您的

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
}
© www.soinside.com 2019 - 2024. All rights reserved.