JS Axios - как получить тело ответа в случае ошибки? - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу получить ответное тело после перехвата ошибок 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), но это возвращает ноль.

Я проверял с помощью Postman, что вызов API действительно возвращает сообщение об ошибке в теле ответа, поэтому API не является проблемой.

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вот что я сделал, чтобы исправить проблему.

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 ".

Спасибо всем за помощь.

0 голосов
/ 05 декабря 2018

Я протестировал его с 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!, как и возвращено.

РЕДАКТИРОВАТЬ: очевидно, проблема, которую вы описали, может возникнуть по разным причинам.См. этот выпуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...