Как я могу получить код состояния из 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'}
Ответы
Ответ 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 });
});