无法访问中间件内的req.body

时间:2016-03-31 15:33:10

标签: node.js rest express

我实际上在带有Express的node.js中有一个非常小的应用程序,我无法访问req.body。

这是我的app.js代码:

var express = require('express'),
    middleware = require('./middleware'),
    mysql  = require('mysql'),
    app = express();

app.use(middleware.authenticate);
app.use(middleware.getScope);

app.listen(3000);
module.exports = app;

带有中间件的文件:

var bcrypt = require('bcrypt'),
    mysql  = require('mysql');

function authenticate(req, res, next){
   console.log(req.body);
    next();
}

function getScope(req, res, next){
    console.log(req.body);
    next();
}

module.exports.authenticate = authenticate;
module.exports.getScope = getScope;

在所有情况下,req.body都是undefined

我发送带有x-www-form-urlencoded协议的Postman数据,在这种情况下是必须的。

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:5)

您需要添加body-parser来表达:

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

在此检查请求 http://expressjs.com/en/api.html

也许POST路线也有帮助:

app.post('/', function (req, res, next) {
  console.log(req.body);
  res.json(req.body);
});