Comment recevoir JSON en express node.js demande POST?
J'envoie un POST WebRequest
à partir de C# avec un objet JSON données et que vous souhaitez la recevoir Node.js serveur comme ceci:
var express = require('express');
var app = express.createServer();
app.configure(function(){
app.use(express.bodyParser());
});
app.post('/ReceiveJSON', function(req, res){
//Suppose I sent this data: {"a":2,"b":3}
//Now how to extract this data from req here?
//console.log("req a:"+req.body.a);//outputs 'undefined'
//console.log("req body:"+req.body);//outputs '[object object]'
res.send("ok");
});
app.listen(3000);
console.log('listening to http://localhost:3000');
Aussi, C# à la fin de l'après WebRequest
est appelé par l'intermédiaire de la méthode suivante:
public string TestPOSTWebRequest(string url,object data)
{
try
{
string reponseData = string.Empty;
var webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
if (webRequest != null)
{
webRequest.Method = "POST";
webRequest.ServicePoint.Expect100Continue = false;
webRequest.Timeout = 20000;
webRequest.ContentType = "application/json; charset=utf-8";
DataContractJsonSerializer ser = new DataContractJsonSerializer(data.GetType());
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, data);
String json = Encoding.UTF8.GetString(ms.ToArray());
StreamWriter writer = new StreamWriter(webRequest.GetRequestStream());
writer.Write(json);
}
var resp = (HttpWebResponse)webRequest.GetResponse();
Stream resStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
reponseData = reader.ReadToEnd();
return reponseData;
}
catch (Exception x)
{
throw x;
}
}
Invocation De Méthode:
TestPOSTWebRequest("http://localhost:3000/ReceiveJSON", new TestJSONType {a = 2, b = 3});
Comment puis-je analyser les données JSON à partir d'un objet de requête dans Node.js le code ci-dessus?
Vous devez vous connecter pour publier un commentaire.
La demande doit être envoyée à:
content-type: application/json; charset=utf-8"
Sinon le bodyParser coups de pied de votre objet comme un élément clé dans un autre objet 🙂
bodyParser le fait automatiquement pour vous, il suffit de faire
console.log(req.body)
Modifier: Votre code est mauvais parce que tout d'abord inclure app.routeur(), avant le bodyParser et tout le reste. C'est un mauvais. Vous ne devriez même pas des applications.routeur(), Exprimer le fait automatiquement pour vous. Voici comment vous code devrait ressembler à:
Vous pouvez le tester à l'aide de Mikeal est agréable Demande module, par l'envoi d'une requête POST avec ces params:
Mise à jour: utilisation corps de l'analyseur pour express 4+.