无法使用Node.js和Express捕获POST参数

我正在尝试一个简单的Node.js + Express RESTful API示例,并且创build了一个简单的动作来模拟login请求。 这是我的代码:

app.js

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(__dirname + '/public/favicon.ico')); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; 

users.js

 var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/', function(req, res) { res.send('respond with a resource'); }); /* My Login */ router.post('/login', function(req, res){ var data = { user : req.body.user, pass : req.body.pass }; res.send(data); }); module.exports = router; 

我使用Postman模拟了一个POST请求(user = joe,pass = 123456),但是我收到一个空的{}作为响应。 已经尝试过这个解决scheme ,但没有成功。 如何捕获Node.js上的POST params? 哪里不对?

更新我已经embedded我的app.jsusers.js代码更好的审查。

问题是你正在发送一个multipart/form-data请求,但是你没有使用任何中间件来处理这些types的请求(Express 4中的body-parser只能处理application/x-www-form-urlencoded和JSON请求) 。

所以你需要使用一个多部分parsing模块,比如connect- busboy / busboy , multer (使用busboy的Express 3 bodyParser-like API), connect-multiparty / multiparty , 强大的 (先前捆绑的Express 3 bodyParser中间件) (使用公务员)。