Я против ужасной войны! Я выражаю свой протест. Я русский. Нам всем пиздец из-за всего лишь одного человека.

Настроить Axios чтобы принимал только JSON

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

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK