Подтвердить что ты не робот

Как я могу получить код состояния из http-ошибки в Axios?

Это может показаться глупым, но я пытаюсь получить данные об ошибках, когда запрос не срабатывает в Axios.

axios.get('foo.com')
    .then((response) => {})
    .catch((error) => {
        console.log(error) //Logs a string: Error: Request failed with status code 404
    })

Вместо строки, возможно ли получить объект, возможно, с кодом состояния и содержимым? Например:

Object = {status: 404, reason: 'Not found', body: '404 Not found'}
4b9b3361

Ответ 1

То, что вы видите, это строка, возвращаемая методом toString объекта error. (error не является строкой.)

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

axios.get('/foo')
  .catch(function (error) {
    if (error.response) {
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    }
  });

Ответ 2

Как сказал @Nick, результаты, которые вы видите при console.log объекте JavaScript Error, зависят от точной реализации console.log, которая меняется и (imo) делает ошибки проверки невероятно раздражающими.

Если вы хотите увидеть полный объект Error и всю информацию, переданную им в обход метода toString(), вы можете просто использовать JSON. stringify:

axios.get('/foo')
  .catch(function (error) {
    console.log(JSON.stringify(error))
  });

Ответ 3

Это известная ошибка, попробуйте использовать "axios": "0.13.1"

https://github.com/mzabriskie/axios/issues/378

У меня была такая же проблема, поэтому я закончил использование "axios": "0.12.0". Это отлично работает для меня.

Ответ 4

Я использую эти перехватчики, чтобы получить ответ об ошибке.

const HttpClient = axios.create({
  baseURL: env.baseUrl,
});

HttpClient.interceptors.response.use((response) => {
  return response;
}, (error) => {
  return Promise.resolve({ error });
});