求教Nodejs express的req如何获取post的数据。
求教Nodejs express的req如何获取post的数据。
app.post(’/post’, function(req, res, next){
//如何获取远程post的数据
});
我公开这么一个post地址。 远程会post数据到这个地址,而这个数据可能是这样的:{“key”: “xxxxx”, “value”: “yyyyyy”}。 远程不是浏览器,我如何在上面的代码中使用req获取数据。
用bodyparser是不行的,因为远程没有发送key=xxxxxx&value=yyyyyy的数据。
我用的是express3.3。 我需要获取json格式的字符串。
当然可以。在处理POST请求时,特别是当请求体包含JSON数据时,你需要解析请求体中的数据。Express本身并不内置解析JSON的能力,因此通常我们会使用body-parser
中间件来帮助我们完成这项任务。
以下是如何在你的Express应用中使用body-parser
来获取POST请求中的JSON数据的示例代码:
示例代码
首先,确保你已经安装了body-parser
。如果没有安装,可以通过npm安装它:
npm install body-parser
然后,在你的Express应用中引入并使用body-parser
中间件:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// 使用body-parser中间件解析JSON格式的请求体
app.use(bodyParser.json());
app.post('/post', function(req, res, next) {
// 获取请求体中的JSON数据
var data = req.body;
// 输出接收到的数据
console.log(data);
// 返回响应
res.send('Data received: ' + JSON.stringify(data));
});
// 启动服务器监听端口
app.listen(3000, function() {
console.log('Server is running on port 3000');
});
解释
-
引入中间件:
body-parser
是一个中间件,用于解析HTTP请求体中的数据。我们通过app.use(bodyParser.json())
告诉Express在处理请求之前先使用body-parser
来解析JSON格式的数据。 -
访问请求体数据:在POST路由处理函数中,你可以直接通过
req.body
访问解析后的JSON数据。在这个例子中,假设远程客户端发送了一个JSON对象{"key": "xxxxx", "value": "yyyyyy"}
,那么req.body
将包含这个对象。 -
返回响应:服务器接收到数据后,可以通过
res.send()
方法返回一个简单的确认消息。
以上就是如何在Express应用中通过body-parser
中间件获取POST请求中的JSON数据的方法。希望这能解决你的问题!
{"token":"e50677321ead477da0548031a9773f1c","data":{"body":"文本","sid":"13638398701","badge":4}}
这样的数据,被bodyparser解析成了
{ '{"token":"e50677321ead477da0548031a9773f1c","data":{"body":"文本","sid":"13638398701","badge":4}': '' } }
完全无法使用呀。
request content-type 是否有设置正确的 application/json ?
https://github.com/senchalabs/connect/blob/master/lib/middleware/json.js#L88 看看 json middleware
谢谢了,设置过content-type,就可以解析了。 非常感谢呀。
要在Express 3.3中处理POST请求并获取JSON格式的数据,你可以使用body-parser
中间件来解析请求体中的JSON数据。body-parser
可以将请求体解析为JSON对象,方便你在应用中使用。
首先,确保安装了body-parser
:
npm install body-parser
然后,在你的应用中使用它:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// 使用bodyParser.json()中间件来解析JSON格式的数据
app.use(bodyParser.json());
app.post('/post', function(req, res) {
// 在这里可以通过req.body来访问POST的数据
var data = req.body;
console.log(data); // 输出: { key: 'xxxxx', value: 'yyyyyy' }
// 响应客户端
res.send('Data received');
});
app.listen(3000, function() {
console.log('Server is running on port 3000');
});
在这个例子中,bodyParser.json()
中间件负责解析请求体,并将其转换为JSON对象。因此,你可以直接通过req.body
访问这些数据。如果请求体包含JSON数据{"key": "xxxxx", "value": "yyyyyy"}
,那么req.body
将会是一个JavaScript对象 { key: 'xxxxx', value: 'yyyyyy' }
。
注意,对于Express 4.x及更高版本,body-parser
已经成为一个独立的库,你需要单独安装并使用它。但对于Express 3.3,上述方法是适用的。