如何仅为POST请求创build节点服务器

我需要创build一个仅用于接收POST请求的节点服务器。 有了请求正文中的信息,我需要创build一个系统调用。 我该怎么做? 到目前为止,我只有:

var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser); app.post('/', function(req, res){ console.log('POST /'); console.dir(req.body); }); port = 3000; app.listen(port); console.log('Listening at http://localhost:' + port) 

但是,当我发出POST请求到127.0.0.1:3000时,主体是未定义的。

var request = require('request');

 request.post( '127.0.0.1:3000', { form: { "user": "asdf" } }, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } } ); 

你这里有一个中间件的问题。 express.bodyparser()中间件在Express 4.x中已弃用。 这意味着你应该使用独立的bodyparser中间件。

奇怪的是,你正在导入正确的中间件:

var bodyParser = require('body-parser');

但是,你应该以不同的方式使用它。 看看文档和给出的例子:

 var app = require('express')(); var bodyParser = require('body-parser'); var multer = require('multer'); app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded app.use(multer()); // for parsing multipart/form-data app.post('/', function (req, res) { console.log(req.body); res.json(req.body); }) 
 var app = require('express')(); var bodyParser = require('body-parser'); var multer = require('multer'); app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded app.use(multer()); // for parsing multipart/form-data app.post('/', function (req, res) { console.log(req.body); res.json(req.body); }) 

在最新版本的express中,不使用express.bodyParser。 看参考