TyForHelpDude
TyForHelpDude

Reputation: 5001

response object is undefined, of post method function

this is simple demo, making http post request and tries the log request object;

var express = require('express')
var bodyParser = require('body-parser')

var app = express()
var router = express.Router();
app.use(router)
app.use(bodyParser.json())

foo=(req, res)=>{
    console.log(req.body)
    res.send('Request Handled Here!')
}
router.route('/').post(foo)

app.listen(3300, '127.0.0.1', (req, res)=>{
    console.log("Express listening!!!!")
});

I can see data "Request Handled Here" message but return data is undefined always in the console, I couldn't figure why "req" object is undefined out.

Edited: I am using postman to test api, content-type:application/json and there is {message:"hello world!"} dummy data in Body section

Edited2: it seems my only issue there is no "body" attribute in request context, it retrieves all req header but I just want to get posted data, many samples on net contains req.body section whats wrong here?

Upvotes: 0

Views: 1035

Answers (1)

alexmac
alexmac

Reputation: 19617

The problem in middleware declaration order. router must be added after body-parser:

var app = express()
var router = express.Router();
app.use(bodyParser.json());
app.use(router);

Upvotes: 1

Related Questions