Nodejs 怎么获得http请求体?不是请求的头
Nodejs 怎么获得http请求体?不是请求的头
我createServer 开了一个监听。 怎样获取client请求时的http主体? 因为那个client不是通过http GET发送内容,而是把内容放在http体里。
3 回复
是post的内容么? node.js是分段获取数据的,需要首先监听 on “data” 事件socket.on(‘data’, function(chunk) {});,把chunk拼起来,再监听一个end事件socket.on(‘end’, function() {}); 在end的时候处理拼起来的数据就是完整的post内容了,参见 http://nodejs.org/api/http.html#http_event_connect_1
要在Node.js中获取HTTP请求体,你需要监听request
事件,并读取req
对象的data
和end
事件。以下是一个示例代码,展示了如何获取HTTP请求体:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let body = [];
req.on('data', chunk => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
console.log('Request Body:', body);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Request body received\n');
});
} else {
res.writeHead(405, { 'Content-Type': 'text/plain' });
res.end('Only POST requests are accepted\n');
}
});
server.listen(3000, () => {
console.log('Server is listening on port 3000');
});
解释
- 创建服务器:使用
http.createServer()
创建一个HTTP服务器。 - 处理请求:
- 检查请求方法是否为
POST
。 - 使用
req.on('data', callback)
监听data
事件来收集请求体的片段。 - 使用
req.on('end', callback)
监听end
事件,当所有数据都被收集后调用该回调函数。
- 检查请求方法是否为
- 拼接请求体:将所有数据片段拼接成完整的请求体。
- 响应客户端:将请求体输出到控制台,并返回一个简单的响应。
这样,你就可以在Node.js中获取并处理HTTP请求体了。