从Express 4.16.0开始,情况再次发生了变化,您现在可以像在Express 3.0中一样使用和。express.json()
express.urlencoded()
从Express 4.0 到 4.15这是不同的:
$ npm install --save body-parser
接着:
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
其余的就像在Express 3.0中一样:
首先你需要添加一些中间件来解析body的post数据。
添加以下一行或两行代码:
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
然后,在您的处理程序中,使用该req.body
对象:
// assuming POST: name=foo&color=red <-- URL encoding
//
// or POST: {"name":"foo","color":"red"} <-- JSON encoding
app.post('/test-page', function(req, res) {
var name = req.body.name,
color = req.body.color;
// ...
});
注意express.bodyParser()
不推荐使用。
app.use(express.bodyParser());
...相当于:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
存在安全问题express.multipart()
,因此最好明确添加对您需要的特定编码类型的支持。如果您确实需要多部分编码(例如支持上传文件),那么您应该阅读此.