簡體   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