如何在 app.post 中获取 post 参数

How to get post params in app.post

我正在开发nodejs项目。我在 express-helpers 模块的帮助下使用 ejs 生成视图模板 html.

server.js文件中我写了下面的代码

var http = require('http');
var path = require('path');

var async = require('async');
var socketio = require('socket.io');
var express = require('express');


var app = express();

var helpers = require('express-helpers')
helpers(app);

var server = http.Server(app);

server.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){
  var addr = server.address();
  console.log("Chat server listening at", addr.address + ":" + addr.port);
});

app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/public/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

//app.use(express.static(__dirname + '/client'));
app.use(express.static(path.join(__dirname, '/client')));

// respond with "index.html" when a GET request is made to the homepage
app.get('/', function(req, res) {
  res.render('index.html');
});

app.get('/demo', function (req, res) {
  res.render('demo.ejs');
});

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

我想知道在app.post中id应该如何获取post参数

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

我试过 console.log(req.body) 但给的是 undefined 也试过 console.log(res.body) 但给出 undefined

让我知道我应该如何实施它?

你应该使用中间件,例如 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

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

使用body-parser中间件。首先,您需要使用 npm install body-parser 安装它。然后像这样在您的应用程序中使用它

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

// For Content-Type application/json
app.use(bodyParser.json()); 
// For x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true })); 

....

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