Опишу как сделать так, чтобы 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)
Не писать ответ