Настроить 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