buydadip
buydadip

Reputation: 9407

node js POST not getting data using React

I am submitting a form and the following gets called...

handleLogin(){
    fetch('http://localhost:8080', {
        method: 'post',
        body: JSON.stringify({
         username: this.state.username,
         password: this.state.password
        })
    });

}

It makes a POST request to my restAPI. The request works, but the data is not passed...

app.post('/', function(req, res, next) {
    console.log(req.body.username);
    ....

This prints out undefined, meaning password and username are not passed through the call. What am I doing wrong?

Upvotes: 1

Views: 558

Answers (2)

Umakant Mane
Umakant Mane

Reputation: 1021

  var express = require("express");
    var app = express();
    var bodyParser = require('body-parser');
    const PORT = process.env.PORT || 7070;
    const BASEURL = process.env.BASEURL || 'http://localhost/7070';

    app.use(bodyParser.urlencoded({extended:true}));
    app.listen(PORT, function() {   console.log('Server running on'+BASEURL);
     });

Upvotes: 0

Mouad Debbar
Mouad Debbar

Reputation: 3226

Express by default doesn't parse the body of the request. In order to enable parsing, you will need to use a middleware such as body-parser. You can find some information in the express docs.

Also, the client side needs to indicate that it's sending json data. That can be achieved with the Content-Type header. There is a pretty good tutorial about fetch() here. You can jump directly to the Request Headers section which is relevant for your question.

Upvotes: 1

Related Questions