我有一个Axios示例:
const axiosInstance = axios.create({
responseType: 'json',
baseURL: `...`,
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
transitional: {
forcedJSONParsing: true,
silentJSONParsing: false,
},
});
字符串
我也有一个非常简单的GET
调用:
const login = () => {
return axiosInstance.get('/auth/login', {
transformResponse: ({ data }) => {
return camelcaseKeys(data);
},
});
};
型
然而,在将Axios更新到v1后,transformResponse
函数破坏了我的应用程序。如果我console.log响应,它是未解析的JSON。但是如果我 * 删除 * transformResponse
函数,它会被正确解析,并且我会将响应作为JS对象,而不是JSON字符串。
为什么transformResponse
函数会破坏一切?为什么它会导致Axios无法解析JSON?
请求头是:
Accept: application/json
型
响应头是:
Content-Type: application/vnd.api+json; charset=utf-8
型
同样奇怪的是,我的代码编辑器格雷将transformResponse
函数变灰,而在Axios更新之前,它没有变灰。
image
1条答案
按热度按时间dfty9e191#
我检查了
transformResponse
https://github.com/axios/axios/blob/v1.x/examples/transform-response/index.html的官方示例正确的使用方法似乎是这样的
字符串
1.当你提供一个函数或函数数组时,它会覆盖默认的
transformResponse
,所以你负责将json字符串序列化为js对象。1.当你使用
axios.defaults.transformResponse
concat时,axios会为你进行序列化,这是默认的行为,让你添加自己的更改。