读取请求体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和可用。