Опишу как сделать так, чтобы Axios выдавал ошибку, если пришел не JSON, а, например, ошибка PHP (html).
Пример кода для решения проблемы:
axios({
method: 'post',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
url: 'api_handler.php',
data: { /* ... */ }
}
)
.then(response =>{
// Проверяем, являются ли подученные данные объектом, и если нет, то отправляем в блок catch
if (typeof response.data !== 'object') {
return Promise.reject(response.data);
}
this.user = response.data;
})
.catch(function (error) {
console.error("ERROR! NOT JSON DATA!");
console.warn(error);
// Это на случай, если нужно вывести HTML при реальной ошибке сервера
if(error.response !== undefined){
console.warn(error.response);
}
});
Теперь, если сервер вернет не JSON, будет выведена ошибка в консоль.
К сожалению, это не самый изящный метод. По идеи должен быть какой-то способ просто указать, что axios должен принять только JSON в качестве ответа сервера, и в любом другом случае перейти в блок catch. Но я такого решения не нашел. Указание application/json в 'Content-Type' не помогает.
Комментарии (0)
Не писать ответ