AmalaGiraffe
AmalaGiraffe

Reputation: 3

Axios POST request returns 404 error when sending to Node.js API

I am developing a web application using a React frontend and a Node.js backend. The frontend sends a POST request to the backend using Axios like this:

Register.js

...

handleSubmit = (e) => {
    e.preventDefault();
    const { email, password, name, dateofbirth } = this.state;
    const user = { email, password, name, dateofbirth };

    const url = "http://localhost:9000/register";
    axios
      .post(url, user, {
        headers: {
          "Content-Type": "application/json",
        },
      })
      .then((response) => console.log(response))
      .catch((error) => {
        console.error("You have made a big error. " + error);
        console.log(user);
      });
  };

...

While the backend receives the request like this:


./routes/register.js

...

router.post("/register", async (req, res) => {
  console.log("Inside Home Login");
  res.writeHead(200, {
    "Content-Type": "application/json",
  });
  console.log("Users : ", JSON.stringify(users));
  res.end(JSON.stringify(users));
  
})

...

However I get the error "POST http://localhost:9000/register 404 (Not Found)" upon trying to send anything.

Upvotes: 0

Views: 7657

Answers (1)

Chandelier Axel
Chandelier Axel

Reputation: 237

My guess would be that you are routing in your index.js. If you can provide a code sample to figure it out.

If so, the thing is defining a routing like,

app.use('/register', yourImportedVariable);

does define a route at http://localhost:9000/register.

So, if in your routes/register.js file you define a GET endpoint with '/register' your front-end call must be http://localhost:9000/register/register

To fix it, either rename your route as '/', or fix your front-end call with the above url.

Upvotes: 1

Related Questions