读取请求主体Nodejs

时间:2017-06-06 15:53:01

标签: node.js

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

var http = require('http');

http.createServer(function (req, res) {

}).listen(6000);

你能解释一下,我如何阅读传入请求的正文,以便在控制台上可视化它?

1 个答案:

答案 0 :(得分:2)

您可以将请求流传递给stdout:

var http = require('http');

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

更新:如果正文包含JSON并且您想要反序列化它,那么您可以从流数据块中构建一个字符串并在其上使用JSON.parse()(记住将其放入其中)一个try / catch块或使用tryjson)或者你可以使用经过测试的解决方案 - 因为如果你想解析JSON主体,那么我怀疑你可能需要做更多的事情。

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测试它:

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

打印:

{ a: 1, b: 2 }

你可以看到它被对象键周围缺少引号解析。

当然,您可以使用req.body.someArray[3]等内容 - 它已完全解析并可用。