Redux 工具包解析非 JSON 响应时出错

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

我正在尝试 redux 工具包,目前有以下切片和突变:

export const apiSlice = createApi({
  reducerPath: "api",
  baseQuery: fetchBaseQuery({
    baseUrl: "https://localhost:3000",
    credentials: "include",
    prepareHeaders: (headers, { getState }) => {
      const token = (getState() as RootState).authentication.token;

      if (token) {
        headers.set("authorization", `Bearer ${token}`);
      }

      return headers;
    }
  }),
  endpoints(builder) {
    return {
      //skipped other endpoints
      whoAmI: builder.mutation<string, void>({
        query(){
          return {
            url: "user/whoAmI",
            method: "GET"
          }
        }
      })
    }
  }
});

当我触发 whoAmI 突变时,我收到一条错误消息“SyntaxError:位置 1(第 1 行第 2 列)处的 JSON 中出现意外数字”,这让我认为 redux 当前期望从 user/whoAmI 端点返回 JSON,实际情况是这样的响应只是一个包含登录用户 ID 的 GUID。

如何配置此端点以期望字符串而不是 JSON,以便避免此错误并获取 id?

react-redux redux-toolkit
1个回答
0
投票

我发现

responseHandler
选项解决了我的问题:

  whoAmI: builder.mutation<string, void>({
    query(){
      return {
        url: "user/whoAmI",
        method: "GET",
        responseHandler: (response) => response.text()
      }
    }
  })

这将使 RTK 将此请求的响应视为纯文本。

来源:https://redux-toolkit.js.org/rtk-query/api/fetchBaseQuery#parsing-a-response

© www.soinside.com 2019 - 2024. All rights reserved.