Search code examples
node.jsexpressbody-parser

Express set app.use middleware in every file?


I've created a very basic express js application. After setting routes and other things I did app.use('/api/', require('./api/api.js'));

api.js looks something like this:

var express = require('express');
var router = express.Router();

router.post('/', function(req, res){
      res.end(req.body);
});

module.exports = router;

I'm using Postman chrome extension to post to this route. The response is empty {}.

The question is: as long as I have in my app.js body-parser middleware set do I need to set it again in api.js ? If not why I have an empty response ?

In app.js body-parser is set like this:

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

Solution

  • Try this

    app.js

    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    
    app.use(bodyParser.json()); // for parsing application/json
    app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
    
    var api = require('./api');
    app.use('/api', api);
    
    
    var server = app.listen(3000, function () {
    
      var host = server.address().address;
      var port = server.address().port;
    
      console.log('Example app listening at http://%s:%s', host, port);
    });
    

    api.js

    var express = require('express');
    var router = express.Router();
    
    router.post('/', function (req, res) {
      res.send((req.body);
    });
    
    module.exports = router
    

    Then, in your PostMan request, something like:

    enter image description here