Redux Toolkit Query期望什么响应格式?如何避免解析错误
问题描述
编写的代码如下:
import { useGetPostQuery } from "./store/postApi"; export function App() { const { data, isLoading, isFetching, isError, error } = useGetPostQuery(1); if (isError) return ( <div> {error.status} <br /> {error.data} </div> ); if (isLoading) return <div>loading...</div>; return <div className={isFetching ? "posts--disabled" : ""}>{data}</div>; }
运行后抛出错误:
PARSING_ERROR
HELLO WORLD
需求为从服务端直接返回字符串HELLO WORLD,需要找到避免该解析错误的方案。
错误原因
RTK Query 默认对所有接口响应执行 JSON 解析逻辑,当服务端直接返回纯文本内容、而非标准 JSON 格式数据时,JSON 解析流程失败,就会触发PARSING_ERROR报错。
修复方案
在定义对应 API 端点时,新增responseHandler配置,显式指定响应按纯文本格式解析即可,修改postApi中对应端点的定义:
// 原端点定义 getPost: builder.query({ query: (id) => `/post/${id}` }) // 修改后 getPost: builder.query({ query: (id) => `/post/${id}`, // 声明响应按文本格式解析,跳过默认的JSON.parse流程 responseHandler: (res) => res.text() })
修改完成后,服务端返回的纯文本HELLO WORLD会被正确读取到data字段中,解析错误不会再出现。
内容的提问来源于stack exchange,提问作者Chong Lip Phang
相关产品推荐
相关产品推荐

