求教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格式的字符串。


6 回复

当然可以。在处理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');
});

解释

  1. 引入中间件body-parser是一个中间件,用于解析HTTP请求体中的数据。我们通过app.use(bodyParser.json())告诉Express在处理请求之前先使用body-parser来解析JSON格式的数据。

  2. 访问请求体数据:在POST路由处理函数中,你可以直接通过req.body访问解析后的JSON数据。在这个例子中,假设远程客户端发送了一个JSON对象{"key": "xxxxx", "value": "yyyyyy"},那么req.body将包含这个对象。

  3. 返回响应:服务器接收到数据后,可以通过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 ?

谢谢了,设置过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,上述方法是适用的。

回到顶部