P.Yntema
P.Yntema

Reputation: 607

Nodejs bodyparser returning undefined for body variables

I'm trying to extract POST data using a NodeJS script (with Express). The body is received, but I cannot seem to extract the variable from it when posting to the page with Postman. The variable is undefined, although I have used the same code I found in different questions. I have correctly installed Nodejs, express and body-parser.

To clarify, I'm posting form-data with Postman with key 'username' and value 'test'.

Anyone knows what I'm doing wrong?

var https = require('https');
var fs = require('fs');
var app = require('express')();
const bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());


var httpsOptions = {
    key: fs.readFileSync('/home/privkey.pem'),
    cert: fs.readFileSync('/home/cert.pem'),
};

var server = https.createServer(httpsOptions, app);
server.listen(3000);


app.get('/', function(req, res) { //On get
    res.send(req.method);
});

app.post('/', function(req, res) { //On post
    res.send( req.body.username );
});

Upvotes: 2

Views: 483

Answers (1)

Charlie
Charlie

Reputation: 183

I guess it has to do with the encoding:

  • JSON: you have to set a header with Content-Type: application/json and add the encoding in express before the route :

    app.use(bodyParser.json());

    app.use(bodyParser.urlencoded({ extended: true }));

Otherwise you can just use the option x-www-form-urlencoded and set the inputs

Upvotes: 1

Related Questions