Как обрабатывать ошибки с кодом 200 статуса в axios? - PullRequest
0 голосов
/ 21 сентября 2019

Мой сервер возвращает json error как ответ 200 - и я не могу его изменить.

Ответ, например:

{
    errors: [{ code: "unauthorized" }]
}

Другой ответ без ошибок также возвращается с200 статус:

 {
        data: [{ id, name... }]
 }

Я использую axios, чтобы сделать http-запрос на получение данных.

axios({
  url: '//www.mocky.io/v2/5d862b16320000f16d07b36b',
  method: 'GET'
}).then(…).catch(…)

До того, как какая-либо ошибка попадет в catch, я хочуобработать эту ошибку в перехватчике.(например, если ошибка 401, то перенаправить)

Итак, я создаю этот перехватчик, но не могу вызвать функцию ошибки ..

axios.interceptors.response.use((response: any) => {
    if (response.data.errors) { throw new Error(response.data.errors); return; }
    return response;
}, (error) => {

        console.log('here I want to handle all my errors before it invoke in catch function!'); // <------------

    return Promise.reject(error);
});

Как это исправить?

Пример кода на stackbliz

Код:

import axios from 'axios';

axios.interceptors.response.use((response: any) => {
    console.log({ interceptor: response.data.errors });
    if (response.data.errors) { throw new Error(response.data.errors); return; }
    return response;
}, (error) => {
    console.log('here I want to handle all my errors before it invoke in catch function!');

    return Promise.reject(error);
});

axios({
  url: '//www.mocky.io/v2/5d862b16320000f16d07b36b',
  method: 'GET',
  //responseType: 'json'
  })
  .then(function (response) {
    // handle success
    console.log({ response });
  })
  .catch(function (error) {
    // handle error
    console.log({ error });
  })
  .finally(function () {
    // always executed
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...