Мой сервер возвращает 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
});