Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I retrieve the error message from an API request [duplicate]

I am building an authentication project. I am unsure on how to get the error messages to show up so that I can print them on the screen. For example, If the email address has already registered, how can I get that error. I am able to see the error message when I test with postman but I'm unsure how to do it with using axios. Below is the code for when a user enters an email thats already registered. How do I access that message

User.findOne({ email }).then(user => {
    if (user)
        return res.status(400).json({ msg: "Email already in use" });
});
like image 926
tjsims8819 Avatar asked Dec 14 '25 17:12

tjsims8819


1 Answers

What's happening is that when your server returns a status code (like 400), it ends up as an exception in the client code (where you're executing your request). There's a couple of different ways to handle this, but the easiest way to is to do a try/catch

Here's an example of what they suggest on their GitHub:

/*
 * Handling Errors using async/await
 * Has to be used inside an async function
 */
try {
    const response = await axios.get('https://your.site/api/v1/bla/ble/bli');
    // Success 🎉
    console.log(response);
} catch (error) {
    // Error 😨
    if (error.response) {
        /*
         * The request was made and the server responded with a
         * status code that falls out of the range of 2xx
         */
        console.log(error.response.data);
        console.log(error.response.status);
        console.log(error.response.headers);
    } else if (error.request) {
        /*
         * The request was made but no response was received, `error.request`
         * is an instance of XMLHttpRequest in the browser and an instance
         * of http.ClientRequest in Node.js
         */
        console.log(error.request);
    } else {
        // Something happened in setting up the request and triggered an Error
        console.log('Error', error.message);
    }
    console.log(error);
}

They have some more examples here. In some other HttpClients, they have the option to always return a full http response. I don't see that option on Axios, but it might just be hidden in their documentation.

like image 72
mwilson Avatar answered Dec 17 '25 08:12

mwilson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!