我正在尝试 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?
我发现
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