1
我跑这个简单的HTTP服务器的Node.js:读请求体的NodeJS
var http = require('http');
http.createServer(function (req, res) {
}).listen(6000);
你能解释一下我,我怎么能读取传入请求的主体,在orderd想象它在控制台上?
我跑这个简单的HTTP服务器的Node.js:读请求体的NodeJS
var http = require('http');
http.createServer(function (req, res) {
}).listen(6000);
你能解释一下我,我怎么能读取传入请求的主体,在orderd想象它在控制台上?
,你可以管的请求流到stdout:
var http = require('http');
http.createServer(function (req, res) {
req.pipe(process.stdout);
}).listen(6000);
更新:如果体内含有JSON和要反序列化,那么你可以建立从数据流块一个字符串,并使用JSON.parse()
(记住把它放在try/catch块中或使用tryjson),或者你可以使用经过测试的解决方案 - 因为如果你想解析JSON体,那么我怀疑你可能需要做更多的事情。
例与Express和身体的解析器:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use((req, res) => {
// req.body is deserialized body:
console.log(req.body);
});
app.listen(6000);
或用旧的语法:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(function (req, res) {
// req.body is deserialized body:
console.log(req.body);
});
app.listen(6000);
你可以卷曲测试它是这样的:
curl -X POST -H 'Content-type: application/json' -d '{"a":1,"b":2}' localhost:6000
它打印:
{ a: 1, b: 2 }
并且您可以看到它由于对象键周围没有引号而被解析。
当然你可以使用像req.body.someArray[3]
等东西 - 它完全解析和可用。
谢谢,如果body包含一个json对象,我该如何反序列化它呢? – SimCor
@SimCor查看最新的答案。 – rsp