Je pense que vous confondez l'utilisation de l' response
objet avec celle du request
.
L' response
objet sert à renvoyer la réponse HTTP au client appelant, alors que vous souhaitez accéder au corps du request
. Voir cette réponse qui fournit quelques conseils.
Si vous utilisez un JSON valide et que vous le postez avec Content-Type: application/json
, vous pouvez utiliser le bodyParser
middleware pour analyser le corps de la demande et placer le résultat dans request.body
votre itinéraire.
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);
Testez le long des lignes de:
$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/
{"MyKey":"My Value"}
Mis à jour pour Express 4+
L'analyseur corporel a été divisé en son propre package npm après la v4, nécessite une installation distincte 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);
Mise à jour pour Express 4.16+
Depuis la version 4.16.0, un nouveau express.json()
middleware est disponible.
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()
l'objet. Jetez un œil aux documents du nœudconsole.log
, car cela inspecte l'objet et renvoie une représentation sous forme de chaîne.console.log('request =' + JSON.stringify(request.body))
console.log()
stringifiera automatiquement un objet (viautil.inspect()
), donc cela fonctionnerait:console.log("with request", request.body);
Pour Express v4 +
installez l'analyseur de corps à partir du npm.
https://www.npmjs.org/package/body-parser#installation
la source
Parfois, vous n'avez pas besoin de bibliothèques tierces pour analyser JSON à partir du texte. Parfois, tout ce dont vous avez besoin est la commande JS suivante, essayez-la d'abord:
la source
body
Pour ceux qui obtiennent un objet vide dans
req.body
J'avais oublié de mettre
headers: {"Content-Type": "application/json"}
dans la demande. Le changer a résolu le problème.la source
text/json
et recevais{}
comme réponse. Un contrôle total de ma part. Très utile.@Daniel Thompson mentionne qu'il a oublié d'ajouter {"Content-Type": "application / json"} dans la demande . Il a pu changer la demande, cependant, changer les demandes n'est pas toujours possible (nous travaillons sur le serveur ici).
Dans mon cas, j'avais besoin de forcer content-type: text / plain à être analysé en json.
Si vous ne pouvez pas modifier le type de contenu de la demande, essayez d'utiliser le code suivant:
Au lieu d'utiliser globalement express.json (), je préfère l'appliquer uniquement là où c'est nécessaire, par exemple dans une requête POST:
la source
Ce app.use (express.json) vous permet désormais de lire l'objet JSON de message entrant
la source