JS Axios-发生错误时如何获取响应正文?

时间:2018-12-04 20:05:57

标签: javascript error-handling axios

我希望能够从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并不是问题。

我想念什么?

2 个答案:

答案 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 ”。

感谢大家的帮助。