express req.pipe() ne fonctionne pas

  1. Je veux écouter à la réception d'une requête POST en express.
  2. Je veux pipe cette demande à un autre serveur
  3. Je veux recevoir une réponse à l'intérieur express gestionnaire (je ne veux pas de réponse canal pour exprimer res stream)

Pour maintenant j'ai le code suivant:

app.post('server1',function(req,res,next){
    var request = require('request');
    req.pipe(request.post('server2')).pipe(res);

}

Donc cela ne fonctionne pas - la demande n'est pas encore joué à server2 - je l'ai vérifié et il n'y a pas de demande entrante.


J'ai résolu les points 1 & 2 comme ceci:

var bodyParser = express.bodyParser();

app.use(function(req,res,next){

    if(req.path == '/server1' && req.method == 'POST') {
        return next();
    }
    else {
        bodyParser(req,res,next);
    }
});

Pas très agréable, mais il fonctionne: il suffit d'désactive bodyparser pour un trajet simple (POST /serveur1).

Mais je ne sais toujours pas comment faire pour obtenir une réponse json corps de canalisations demande - je avoir code suivant:

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 objet a corriger statusCode et les en-têtes et ainsi de suite, mais il ne contient pas de corps - comment puis-je obtenir ce à partir de la res2 objet? /server2 retourne des données en json mais je ne sais pas comment les lire à partir de la réponse...

  • Cela signifie probablement que req a déjà été lu à l'achèvement -- pour son 'end' - peut-être par bodyParser(). Un flux de ne pas redémarrer une nouvelle .pipe() après.
  • Ainsi donc, comment je peux le faire a pas été lu à la réalisation? Ou comment je peux procéder à un flux de déjà lu demande? J'ai des tuyaux de la demande car il est de téléchargement de fichiers il...
  • Je edites ma question - votre commentaire sur bodyParser m'a beaucoup aidé - j'ai juste besoin de résoudre dernier point (3).
  • Toutes mes requêtes post cessé de tuyauterie après avoir procédé à quelques changements, y compris la configuration d'un corps analyseur de tous les postes clients.. ne sais pas combien de temps j'aurais été cogner ma tête contre le bureau si ce n'était pas pour votre commentaire Merci! 🙂
InformationsquelleAutor user606521 | 2013-09-10