2016-06-23 15 views
1

Ich habe versucht, die Threads auf Node "req is not defined" und req.body is empty when making a post request via http.request und ähnliche, aber das Problem bleibt.Node.js req.body ist leer

Die Server-Seite Code:

var express = require('express'); 
var bodyParser = require('body-parser'); 
var validator = require('validator'); 
var app = express(); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    next(); 
}); 

app.post('/sampleurl', function (req, res) { 
    var reqbody = req.body; 
    console.log(reqbody); 
}); 

app.listen(process.env.PORT); 
console.log("listening"); 

Was ich senden (mit hurl.it):

post request response

Was ich vom Server erhalten (die console.log) :

listening 
{} 
+1

Versuchen Sie stattdessen 'reqbody' als' req.test' zu definieren. –

Antwort

5

Ich habe es gerade versucht r code .. Es ist völlig in Ordnung ..

Was Sie fehlen, ist das Hinzufügen von Kopfzeilen in der Anfrage.

hinzufügen Content-Type Header als application/jsonenter image description here

+0

Danke, es funktioniert jetzt. – Robert

2

die andere Antwort zu verlängern, was richtig ist, Körper-Parser überprüft die Content-Type, bevor Sie den HTTP-Körper zu analysieren.

Wenn Sie möchten, um dieses Verhalten ändern, können Sie Körper-Parser versucht haben jede Eingabe in json zu analysieren, unabhängig von der Content-Type:

app.use(bodyParser.json({ type: '*' })); 

Die Wildcard * wird es sagen, um zu versuchen, auf analysieren jeder Typ: https://github.com/expressjs/body-parser#bodyparserjsonoptions

+0

Gute Methode! Vielen Dank für Ihre Antwort. – Robert