I want to be able to get the response body back from an Axios error catch.
I am using axios v0.18.0.
My axios code looks like this:
let service = axios.create({
baseURL: "https://baseUrl.azurewebsites.net",
responseType: "json"
});
service.defaults.headers.common['authorization'] = `Bearer ${token}`;
service.post("/api/method", params).then(result => {
console.log('success',result);
}).catch(error=>{
console.log('error');
console.log(error);
});
My API call is returning a 400 error as I expected, given my inputs. So I am hitting the catch block. However I'm not able to retrieve the error message that's returned by the API call.
I've tried doing a console.out(error.response.data), but this returns null.
I've verified using Postman that the API call does return an error message in the response body, so the API isn't the problem.
What am I missing?
axios. get('/my-api-route') . then(res => { // Work with the response... }). catch(err => { // Handle error console.
Axios is a promise based HTTP client for the browser and Node. js. Axios makes it easy to send asynchronous HTTP requests to REST endpoints and perform CRUD operations. It can be used in plain JavaScript or with a library such as Vue or React.
A standardized error format is returned in the body of the response whenever there is an error while fulfilling the request. This is accompanied by the response status code, which provides additional insight.
Once you make a request, Axios returns a promise that will resolve to either a response object or an error object.
I tested it with Mocky and the error message is indeed returned in error.response.data
.
const axios = require('axios');
// http://www.mocky.io/v2/5c06f6be3000009600d25953 (the mock api to call, it always returns 400 with an error message)
let service = axios.create({
baseURL: "http://www.mocky.io",
responseType: "json"
});
service.post("/v2/5c06f6be3000009600d25953").then(result => {
console.log('success', result);
}).catch(error => {
console.log(error.response.data);
});
The code above prints Ooops, bad request!
, as returned.
EDIT: apparently the problem you described can happen for a variety of reasons. See this issue.
Here is what I did to fix the problem.
let options = {
baseURL: "http://www.mocky.io",
responseType: "application/json"
};
//service.post("/v2/5c06f6be3000009600d25953",{}).then(result => {
axios.post("/v2/5c06f6be3000009600d25953",null,options).then(result => {
console.log('success', result);
}).catch(error => {
console.log(error.response);
});
The main modification was to change "responseType" to "application/json".
Thanks for your help everyone.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With