我使用的是axios
版本0.18.0
:
const axiosInstance = axios.create({
responseType: 'json',
baseURL: `api/v1/example`,
headers: {
'Content-Type': 'application/vnd.api+json',
Accept: 'application/vnd.api+json',
},
});
axiosInstance.interceptors.response.use((response) => {
console.log(response);
return response;
}, callback);
log:
{
"data": { foo: "bar" }, <---- this is typeof Array (JSON is parsed automatically)
"status": 200,
"statusText": "",
"headers": {},
"config": {
"transformRequest": {},
...and more
}
字符串
但是更新到最新版本后,1.6.2
和我的应用程序崩溃,因为JSON不再正确解析。
axiosInstance.interceptors.response.use((response) => {
console.log(response);
return response;
}, callback);
log:
{
"data": "{\"foo\":\"bar\"}" <---- typeof string (JSON, its not parsed automatically)
"status": 200,
"statusText": "",
"headers": {},
"config": {
"transformRequest": {},
...and more
}
型
为什么我的响应不再被正确解析?响应内容类型为:application/vnd.api+json; charset=utf-8
个
1条答案
按热度按时间dl5txlt91#
Axios应该默认将响应解析为JSON,但您的拦截器显示,可能默认值没有应用于您的axios示例。请确保您导入的axios是
import axios from 'axios'
而不是import { Axios } from 'axios'
。如果这不起作用,您可以显式地告诉Axios将响应视为具有
responseType
请求配置值的json:字符串
或与
型
也可能是JSON格式不正确。尝试在配置中将
transitional.silentJSONParsing
设置为false
以找出答案(确保responseType也设置为“json”)