redux RTK查询不处理文本响应

2izufjch  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(175)

我们有一个基于fetchBaseQuery的基本RTK API Slice,就像RTK文档中推荐的一样。
此外,还有一个后端服务在响应中以文本形式返回数据,但在响应头中声明为Content-Type: application/json。我知道这不一致,但很遗憾,我们现在没有权限更改此设置。
我们尝试以适当的方式解析它,但我们无法获得任何有关数据的线索,我们在RTK中看不到,甚至无法到达transformResponse内部。当我们检查网络选项卡上的XHR/Fetch活动时,我们看到了预期的响应,这是我们成功接收数据的唯一线索。
我认为RTK不会处理这些数据,因为它在响应头中声明为json,但在主体中提供为文本字符串。这有点尴尬,因为我们在任何地方都看不到任何错误。
你知道我们怎么才能得到RTK内部的响应吗?

nhjlsmyf

nhjlsmyf1#

您可以在端点上设定responseHandler: 'text'

u3r8eeie

u3r8eeie2#

来自文档:
默认情况下,fetchBaseQuery假设您得到的每个响应都将被解析为json。如果您不希望发生这种情况,您可以指定一个替代的响应处理程序(如text),或者完全控制并使用一个接受原始Response对象的自定义函数-
来自文档的示例:

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'

export const customApi = createApi({
  baseQuery: fetchBaseQuery({ baseUrl: '/api/' }),
  endpoints: (builder) => ({
    getUsers: builder.query({
      query: () => ({
        url: `users`,
        //*********************************8
        // this is how you handle
        responseHandler: (response) => response.text(), // This is the same as passing 'text'
      }),
    }),
  }),
})

相关问题