【问题标题】:Handling 302 status with RTK Query使用 RTK 查询处理 302 状态
【发布时间】:2023-01-27 12:02:45
【问题描述】:

我有一个 POST 请求,成功时返回 302。我需要获取包含我需要重定向到的 url 的位置响应标头。目前我有这个:

accountLogin: builder.mutation<any, any>({
   query: (body) => ({
      url: `/accounts/login`,
      method: 'POST',
      body,
      responseHandler: (response) => {
        console.log(response, response.headers);
        return response.text();
      },
  }),
}),

如果我查看浏览器的网络选项卡,就会看到 302,以及带有正确 URL 的位置标头。但是 responseHandler 中的“console.log”没有显示标题。我在文档中找不到太多关于这个的信息——我错过了什么?

【问题讨论】:

    标签: redux http-status-code-302 rtk-query response-headers


    【解决方案1】:

    要访问状态代码,您可以使用 validateStatus,如下所示:

    import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'
    
    export const customApi = createApi({
      // Set the baseUrl for every endpoint below
      baseQuery: fetchBaseQuery({ baseUrl: '/api/' }),
      endpoints: (builder) => ({
        getUsers: builder.query({
          query: () => ({
            url: `users`,
            // Example: we have a backend API always returns a 200,
            // but sets an `isError` property when there is an error.
            validateStatus: (response, result) =>
              response.status === 200 && !result.isError,
          }),
        }),
      }),
    })
    

    或使用transformResponse

    transformResponse: (response, meta, arg) =>
      response.some.deeply.nested.collection
    

    【讨论】: