读取请求体Nodejs

我正在运行这个简单的http node.js服务器:

var http = require('http'); http.createServer(function (req, res) { }).listen(6000); 

你能解释我,我怎么能读取传入请求的主体,以便在控制台上可视化?

您可以将请求stream传送到标准输出:

 var http = require('http'); http.createServer(function (req, res) { req.pipe(process.stdout); }).listen(6000); 

更新:如果正文包含JSON,并且想要反序列化它,则可以从stream数据块中build立一个string,并使用JSON.parse() (记住放在try / catch块中或使用tryjson )你可以使用一个经过testing的解决scheme – 因为如果你想parsingJSON体,那么我怀疑你可能需要做更多的事情。

Express和body-parser的例子:

 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来testing它:

 curl -X POST -H 'Content-type: application/json' -d '{"a":1,"b":2}' localhost:6000 

它打印:

 { a: 1, b: 2 } 

你可以看到它的parsing由于对象键周围没有引号。

当然,你可以使用像req.body.someArray[3]等东西 – 它完全parsing和可用。