Настроить 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. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

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

jQuery.Maskedinput js - документация на русском с примерами

Маска для ввода телефона +7(___)___-__-__

Отключить автозаполнение input

Настройка Webpack - несколько точек входа и разделение на чанки

Универсальная форма обратной связи — feedBackForm

Слайдер Slick slider в контенте ресурса

Как сделать переменную не реактивной в Vue

Bxslider отображение картинок после полной загрузки слайдера

Как обработать POST данные в PHP

Примеры использования Vuex

Выполнить код после асинхронного запроса axios во Vue

Как вызвать метод из другого компонента Vue

Заготовки JavaScript

Рекурсивно вложенный компонент Vue

Связать значения инпутов через jQuery (биндинг)

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

Использование async/await в JavaScript с Vue.js

Js-beautify - библиотека для форматирования HTML, CSS, JS

Использование Promise.all с примерами на VueJs

Создание цикла асинхронных вызовов во Vue.js

Манипуляция с HTML во Vue.js и cash-dom

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