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

Express set app.use middleware in every file?

我创建了一个非常基本的 express 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 到 post 的扩展。响应为空 {}

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

app.js中,body-parser是这样设置的:

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

试试这个

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 请求中,类似于:

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