Comment puis-je consommer de l'JSON publier des données dans une demande Expresse
J'envoie la suite de chaîne JSON pour mon serveur.
(
{
id = 1;
name = foo;
},
{
id = 2;
name = bar;
}
)
Sur le serveur j'ai ce.
app.post('/', function(request, response) {
console.log("Got response: " + response.statusCode);
response.on('data', function(chunk) {
queryResponse+=chunk;
console.log('data');
});
response.on('end', function(){
console.log('end');
});
});
Quand j'envoie la chaîne de caractères, il montre que j'ai eu une réponse de 200, mais ces deux méthodes ne jamais exécuter. Pourquoi est-ce?
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes l'amalgame entre l'utilisation de la
response
objet avec celle de larequest
.La
response
objet est pour l'envoi de la réponse HTTP au client appelant, alors que vous êtes désireux d'accéder au corps de larequest
. Voir ce réponse qui fournit quelques indications.Si vous êtes en utilisant JSON valide et sont à Poster avec
Content-Type: application/json
, vous pouvez utiliser lebodyParser
middleware pour analyser le corps de la demande et place le résultat dansrequest.body
de votre itinéraire.Test le long des lignes de:
Mis à jour pour Express 4+
Corps analyseur a été divisée dans son propre package npm après v4, nécessite une installation séparée de
npm install body-parser
Mise à jour pour Exprimer 4.16+
À partir de la version 4.16.0, une nouvelle
express.json()
middleware est disponible.request.body.MyKey
toString()
sur l'objet. Regardez le nœud de docs pourconsole.log
, en tant que chargée de l'inspection de l'objet et renvoie une représentation sous forme de chaîne.console.log('request =' + JSON.stringify(request.body))
console.log()
automatiquement stringify un objet (viautil.inspect()
), donc cela devrait fonctionner:console.log("with request", request.body);
Pour Exprimer v4+
installer corps-analyseur du mécanisme national de prévention.
https://www.npmjs.org/package/body-parser#installation
Parfois, vous n'avez pas besoin de bibliothèques tierces pour parser du JSON à partir du texte.
Parfois, tout ce que vous devez le lendemain JS commande, essayez d'abord:
body
Pour ceux qui l'obtention d'un objet vide dans
req.body
J'avais oublié de définir
headers: {"Content-Type": "application/json"}
dans la requête. Changer de il a résolu le problème.
text/json
et se{}
comme une réponse. Total de la surveillance de ma part. Très utile.JS:
Cette application.utilisation(express.json) vous permettra de lire les entrants post objet JSON
@Daniel Thompson mentionne qu'il avait oublié d'ajouter {"Content-Type": "application/json"} dans le demande. Il a été en mesure de modifier la demande, toutefois, l'évolution des demandes n'est pas toujours possible (nous travaillons sur le serveur ici).
Dans mon cas, j'avais besoin de force content-type: text/plain pour être analysée comme json.
Si vous ne pouvez pas modifier le type de contenu de la demande, essayez d'utiliser le code suivant:
Au lieu d'utiliser express.json() globalement, je préfère l'appliquer qu'en cas de nécessité, par exemple dans une requête POST: