繁体   English   中英

读取请求正文Node.js

[英]Reading requests body Nodejs

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

var http = require('http');

http.createServer(function (req, res) {

}).listen(6000);

您能解释一下我如何读取传入请求的正文,以便在控制台上对其进行可视化处理?

您可以将请求流通过管道发送到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]类的东西-它已完全解析且可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM