Get Axios frontend Обещание получать сообщения об ошибках от Rails backend

1

В Rails я возвращаюсь:

render json: { errors: e.response.body.errors }, status: 400

В JavaScript я использую Axios:

axios.patch('/settings/account', {}, {params: {...
    } })
  .then((e)=> {
    ...
    console.log('submitted')
  })
  .catch(function (error, res) {
    // only get error that gives 400, but not error msg here, res isn't here
    console.log(error);
  });

Как получить e.response.body.errors в моем интерфейсе?

Теги:
error-handling
promise
axios

1 ответ

1
Лучший ответ

Axios отказываются от обещаний, если код состояния HTTP-ответа сервера - это ничего, кроме 2xx. Я вижу, что вы отправляете сообщение об ошибке с сервера, но отправляете ли вы этот ответ через статус ошибки HTTP? Если вы arent, ошибка не является ошибкой для axios, поэтому ошибка будет отображаться в "then()" hook, так как обещание будет разрешено.

Если да, то вы должны увидеть ошибку error.response.data

  • 0
    Axios сначала улавливает ошибку, если ваш сервер возвращает что-либо, кроме 2xx. Если у ошибки есть тело ответа, вы должны увидеть тело в error.response.data . Но возможно, что axios перехватывает другие ошибки, например, если у вашего сервера возникли проблемы с отправкой этого тела ошибок. Если это произойдет, вы должны увидеть ошибку whitin error.message или error.request или просто console.log(error) чтобы увидеть, что происходит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню