在每个文件中快速设置app.use中间件?

时间:2015-04-17 08:03:12

标签: node.js express body-parser

我已经创建了一个非常基本的快递js应用程序。设置路线和其他事情后我做了app.use('/api/', require('./api/api.js'));

api.js看起来像这样:

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

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

module.exports = router;

我正在使用Postman chrome扩展程序发布到此路线。响应为空{}

问题是:只要我在app.js body-parser中间件集中,我需要在api.js中再次设置它吗?如果不是为什么我的回答是空的?

app.js中,body-parser设置如下:

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

2 个答案:

答案 0 :(得分:1)

试试这个

<强> 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

然后,在你的PostMan请求中,例如:

enter image description here

答案 1 :(得分:0)

您在/api/中使用了app.use('/api/', require('./api/api.js'));来使用该路由,而在您使用router.post('/', ...的路由中。如果您删除/api/中的尾部正斜杠,则可能会起作用。