- Ich möchte eingehende POST-Anfrage in Express hören.
- ich diese Anfrage an einen anderen Server Rohr wollen
- I Antwort innerhalb Express-Handler empfangen möchten (I Rohr Antwort nicht wollen res Strom ausdrücken)
Vorerst habe ich folgenden Code:express req.pipe() funktioniert nicht
app.post('server1',function(req,res,next){
var request = require('request');
req.pipe(request.post('server2')).pipe(res);
}
So funktioniert das nicht - Anfrage ist nicht einmal an Server2 piped - Ich habe es überprüft und es gibt keine eingehende Anfrage.
I gelöst Punkte 1 & 2 wie folgt aus:
var bodyParser = express.bodyParser();
app.use(function(req,res,next){
if(req.path == '/server1' && req.method == 'POST') {
return next();
}
else {
bodyParser(req,res,next);
}
});
nicht sehr schön, aber es funktioniert - es deaktiviert nur bodyparser für eine einzelne Strecke (POST/server1).
Aber ich weiß noch nicht, wie Json Antwort Körper von verrohrt Anfrage zu erhalten - ich folgenden Code haben:
app.post('/server1',function(req,res,next){
var request = require('request');
var pipe = req.pipe(request.post('/server2'));
pipe.on('end',function(){
var res2 = pipe.response;
console.log(res2);
});
});
res2
Objekt korrekt status und Header hat und so weiter, aber es nicht Körper enthalten - wie kann ich das vom res2
Objekt bekommen? /server2
gibt einige Daten in json, aber ich weiß nicht, wie es von Antwort zu lesen ...
Es bedeutet wahrscheinlich, dass 'req' bereits vollständig gelesen wurde - zu seinem [' 'end''] (http://nodejs.org/api/stream.html#stream_event_end) - möglicherweise von 'bodyParser() '. Ein Stream startet danach nicht mehr * neu für ein neues '.pipe()'. –
Nun, wie kann ich es nicht bis zur Fertigstellung gelesen bekommen? Oder wie kann ich aus bereits gelesener Anfrage einen Stream machen? Ich muss eine Anfrage stellen, da dort eine Datei hochgeladen wird ... – user606521
Ich editiere meine Frage - Ihr Kommentar zu 'bodyParser' hat mir sehr geholfen - ich muss nur den letzten Punkt (3) lösen. – user606521