如何仅为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。 看参考