2017-06-06 5 views
1

ich diese einfache http laufen node.js Server:Leseanfragen Körper NodeJS

var http = require('http'); 

http.createServer(function (req, res) { 

}).listen(6000); 

Können Sie erklären mir, wie ich den Körper der eingehenden Anfragen lesen können, in orderd es auf der Konsole zu visualisieren ?

Antwort

2

Sie könnten Rohr die Anfrage Strom stdout:

var http = require('http'); 

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

Update: Wenn der Körper enthält JSON und Sie wollen es deserialisiert dann könnte man einen String aus dem Stream Datenblöcke aufbauen und verwenden JSON.parse() (Denken Sie daran, es in einen try/catch-Block zu setzen oder tryjson zu verwenden), oder Sie könnten eine getestete Lösung dafür verwenden - denn wenn Sie den JSON-Körper analysieren wollen, vermute ich, dass Sie möglicherweise mehr damit tun müssen.

Beispiel mit Express und Körper-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); 

oder mit einer älteren Syntax:

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); 

Sie können es mit curl testen wie folgt aus:

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

Er druckt :

{ a: 1, b: 2 } 

und Sie können sehen, dass es durch das Fehlen von Anführungszeichen um die Objektschlüssel analysiert wird.

Natürlich können Sie Dinge wie req.body.someArray[3] usw. verwenden - es ist vollständig geparst und nutzbar.

+0

danke, wenn der Körper ein Json-Objekt enthalten, wie kann ich es deserialisieren? – SimCor

+0

@SimCor Siehe die aktualisierte Antwort. – rsp

Verwandte Themen