Redux Toolkit配置端点以处理非JSON字符串响应的问题
Redux Toolkit配置端点以处理非JSON字符串响应的问题
嗨,这个问题我之前也碰到过!根源在于RTK Query的fetchBaseQuery默认会把后端返回的响应当作JSON来解析,但你的user/whoAmI接口返回的是纯字符串格式的GUID,不是标准JSON,所以才会抛出解析错误。
给你两种简单的解决方法,按需选择就行:
方法一:给单个端点配置文本响应处理
直接在whoAmI的query配置里加上responseHandler: "text",明确告诉RTK Query这个接口返回的是纯文本,不要自动解析JSON:
whoAmI: builder.mutation<string, void>({ query(){ return { url: "user/whoAmI", method: "GET", responseHandler: "text" // 这行是关键配置 } } })
配置完之后,RTK Query就会直接把接口返回的GUID字符串返回给你,刚好匹配你定义的string类型返回值,完美解决解析错误。
方法二:结合transformResponse做额外处理
如果需要对返回的字符串做一些小处理(比如去掉首尾的空格),可以再加上transformResponse来实现自定义逻辑:
whoAmI: builder.mutation<string, void>({ query(){ return { url: "user/whoAmI", method: "GET", responseHandler: "text" } }, transformResponse: (response: string) => { // 这里可以添加自定义处理逻辑,比如去除空格 return response.trim(); } })
如果不是大部分接口都返回纯文本,不建议修改全局的baseQuery默认行为,针对性配置单个端点更灵活。
备注:内容来源于stack exchange,提问作者Eduardo Wada
相关产品推荐
相关产品推荐

