Nodejs express 3.x升级到4.x后,post请求处理的问题
Nodejs express 3.x升级到4.x后,post请求处理的问题
在express3.x的时候,处理post请求只需要 app.use(express.bodyParser({keepExtensions: true, uploadDir: ‘/tmp/’})); 这样req.body.name就能取到值 而升级到了4.x后 req.body.name是undefined,无法取值了 请问4.x是怎么处理post请求过来的数据的呢?
Node.js Express 3.x 升级到 4.x 后 POST 请求处理的问题
在 Express 3.x 中,处理 POST 请求非常简单。你只需使用 express.bodyParser() 中间件来解析请求体中的数据。例如:
var express = require('express');
var app = express();
app.use(express.bodyParser({ keepExtensions: true, uploadDir: '/tmp/' }));
app.post('/submit', function(req, res) {
    console.log(req.body.name); // 这里可以获取到表单提交的数据
    res.send('Data received');
});
app.listen(3000);
然而,当你将应用从 Express 3.x 升级到 4.x 后,你会发现 req.body 是 undefined。这是因为 Express 4.x 移除了内置的中间件(如 bodyParser),并且你需要手动安装并使用第三方中间件来处理请求体。
解决方案
为了在 Express 4.x 中正确处理 POST 请求,你需要安装 body-parser 模块,并将其作为中间件使用。以下是具体的步骤和代码示例:
- 
安装 body-parser:npm install body-parser --save
- 
更新你的 Express 应用代码: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); // 使用 body-parser 中间件来解析请求体 app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.post('/submit', function(req, res) { console.log(req.body.name); // 现在可以获取到表单提交的数据 res.send('Data received'); }); app.listen(3000, function() { console.log('Server is running on port 3000'); });
解释
- bodyParser.urlencoded({ extended: true }):用于解析 URL 编码的请求体(如- application/x-www-form-urlencoded)。
- bodyParser.json():用于解析 JSON 格式的请求体(如- application/json)。
通过这种方式,你可以确保在 Express 4.x 中正确地处理 POST 请求,并且可以访问到请求体中的数据。
好像已经没有 express.bodyParser() 了。加载个 body-parser应该可以解决。
我明白了,谢谢你
不行,body-parser的readme说了,不处理form-data方式的post了
 
        
       
                     
                   
                    


