Ich denke, Sie verbinden die Verwendung des response
Objekts mit der des request
.
Das response
Objekt dient zum Zurücksenden der HTTP-Antwort an den aufrufenden Client, während Sie auf den Hauptteil des zugreifen möchten request
. Siehe diese Antwort, die einige Anleitungen enthält.
Wenn Sie gültiges JSON verwenden und es POSTEN Content-Type: application/json
, können Sie die bodyParser
Middleware verwenden, um den Anforderungshauptteil zu analysieren und das Ergebnis request.body
Ihrer Route zu platzieren.
var express = require('express')
, app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Test nach dem Vorbild von:
$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/
{"MyKey":"My Value"}
Aktualisiert für Express 4+
Der Body Parser wurde nach Version 4 in ein eigenes npm-Paket aufgeteilt und erfordert eine separate Installation npm install body-parser
var express = require('express')
, bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Update für Express 4.16+
Ab Release 4.16.0 ist eine neue express.json()
Middleware verfügbar.
var express = require('express');
var app = express();
app.use(express.json());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
request.body.MyKey
toString()
das Objekt aufruft . Schauen Sie sich die Knotendokumente anconsole.log
, um das Objekt zu untersuchen und eine Zeichenfolgendarstellung zurückzugeben.console.log('request =' + JSON.stringify(request.body))
console.log()
wird automatisch ein Objekt (viautil.inspect()
) stringifizieren , so dass dies funktionieren würde:console.log("with request", request.body);
Für Express v4 +
Installieren Sie den Body-Parser von der npm.
https://www.npmjs.org/package/body-parser#installation
quelle
Manchmal benötigen Sie keine Bibliotheken von Drittanbietern, um JSON aus Text zu analysieren. Manchmal brauchen Sie nur den folgenden JS-Befehl: Versuchen Sie es zuerst:
quelle
body
Für diejenigen, die ein leeres Objekt hinein bekommen
req.body
Ich hatte vergessen,
headers: {"Content-Type": "application/json"}
die Anfrage zu stellen. Das Ändern löste das Problem.quelle
text/json
und bekam{}
als Antwort. Totale Kontrolle meinerseits. Sehr hilfreich.@ Daniel Thompson erwähnt, dass er vergessen hat, {"Content-Type": "application / json"} in die Anfrage aufzunehmen . Er konnte die Anfrage ändern, eine Änderung der Anfragen ist jedoch nicht immer möglich (wir arbeiten hier am Server).
In meinem Fall musste ich erzwingen, dass der Inhaltstyp: text / plain als json analysiert wird.
Wenn Sie den Inhaltstyp der Anforderung nicht ändern können, verwenden Sie den folgenden Code:
Anstatt express.json () global zu verwenden, ziehe ich es vor, es nur bei Bedarf anzuwenden, beispielsweise in einer POST-Anfrage:
quelle
Mit dieser app.use (express.json) können Sie jetzt das eingehende Post-JSON-Objekt lesen
quelle