我希望能够从Axios错误捕获中获取响应正文。
我正在使用axios v0.18.0。
我的axios代码如下:
let service = axios.create({
baseURL: "https://baseUrl.azurewebsites.net",
responseType: "json"
});
service.defaults.headers.common['authorization'] = `Bearer ${token}`;
service.post("/api/method", params).then(result => {
console.log('success',result);
}).catch(error=>{
console.log('error');
console.log(error);
});
鉴于我的输入,我的API调用返回了我期望的400错误。因此,我遇到了麻烦。但是,我无法检索API调用返回的错误消息。
我尝试执行console.out(error.response.data),但这返回null。
我已经使用Postman验证了API调用确实在响应正文中返回了错误消息,所以API并不是问题。
我想念什么?
答案 0 :(得分:3)
我用Mocky进行了测试,错误消息确实在error.response.data
中返回了。
const axios = require('axios');
// http://www.mocky.io/v2/5c06f6be3000009600d25953 (the mock api to call, it always returns 400 with an error message)
let service = axios.create({
baseURL: "http://www.mocky.io",
responseType: "json"
});
service.post("/v2/5c06f6be3000009600d25953").then(result => {
console.log('success', result);
}).catch(error => {
console.log(error.response.data);
});
上面的代码显示Ooops, bad request!
,并返回。
编辑:显然,您所描述的问题可能由于多种原因而发生。请参阅this问题。
答案 1 :(得分:1)
这是我要解决的问题。
let options = {
baseURL: "http://www.mocky.io",
responseType: "application/json"
};
//service.post("/v2/5c06f6be3000009600d25953",{}).then(result => {
axios.post("/v2/5c06f6be3000009600d25953",null,options).then(result => {
console.log('success', result);
}).catch(error => {
console.log(error.response);
});
主要修改是将“ responseType”更改为“ application / json ”。
感谢大家的帮助。