Браузер перезаписывает содержимое сообщения после получения ответа - PullRequest
0 голосов
/ 03 июня 2019

У меня небольшая проблема с DingoAPI и Vue.js, когда я пытаюсь получить сообщение об ошибке из ответа.Я думаю, что браузер заменяет мое пользовательское сообщение сообщением по умолчанию.Вот мой код:

PHP-скрипт

if($request->readerId){
      Return succes (this works properly)
else{
      return $this->response->error(
           'No reader',
           400 //(or diffrent code)
      );
}

Vue.js-скрипт

await axios.post(API_URL + 'card/', {
            some data
        }, {
            headers: {
                headers
            },
        }).then(({data}) => {
            context.commit(SET_RESPONSE, data);
        }).catch((error) => {
            console.log(error.message);
            throw error
        })

Когда я пытаюсь посмотреть свое сообщение на вкладке сети, яможно увидеть (поэтому DingoAPI сделал это правильно):

{"message": "Нет читателя", "код_состояния": 400}

Но когда я используюconsole.log(error.message) или при попытке показать его на странице появляется стандартное сообщение об ошибке:

Запрос не выполнен с кодом состояния 400

Есть ли способ установить сообщение об ошибке с помощьюDingoAPI и поймать его в моем скрипте .js?Может быть, мне нужно написать собственное исключение?

1 Ответ

1 голос
/ 03 июня 2019

Вам нужен доступ к данным ответа из вашей переменной ошибки.

console.log(error.response.data.message); // No reader

В противном случае вы можете войти error.response, чтобы увидеть объект:

console.log(error.response);

ЕслиВы задаетесь вопросом, почему он печатает Запрос не выполнен с кодом состояния 400 :

Проблема в том, что когда console.log пытается вывести ошибку, выводится строковое представление, а не объектструктура, поэтому вы не видите свойство .response.

Источник: https://github.com/axios/axios/issues/960#issuecomment-309287911

...