express req.pipe()不起作用 [英] express req.pipe() does not work

查看:142
本文介绍了express req.pipe()不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  • 我想要将此请求传递给另一台服务器

  • li>我想在快递处理程序中收到回复(我不想管道响应来表达res流)

  • 现在我有以下代码:

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

    }

    所以这不行 - 请求甚至没有管道到server2 - 我检查了,没有收到的请求。






    我解决了点1和2,如下所示:

      var bodyParser = express.bodyParser(); 

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

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

    不是很好,但它的工作 - 它只是禁用bodyparser为单个路由(POST / server1)。



    但我仍然不知道如何从管道请求获取json响应体 - 我有以下代码: / p>

      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 对象具有正确的statusCode和标题但是它不包含正文 - 我如何从 res2 对象获取这个? / server2 在json中返回一些数据,但我不知道如何从响应中读取...

    解决方案

    它不起作用,因为bodyParser使用解析器拦截所有的物体


    1. I want to listen to incoming POST request in express.
    2. I want to pipe this request to another server
    3. I want to receive response inside express handler (I dont want to pipe response to express res stream)

    For now I have following code:

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

    So this does not work - request is not even piped to server2 - I checked it and there is no incoming request.


    I solved points 1 & 2 like this:

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

    Not very nice but it works - it just disables bodyparser for a single route (POST /server1).

    But I still don't know how to obtain json response body from piped request - I have following code:

    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 object has correct statusCode and headers and so on but it does not contain body - how I can get this from the res2 object? /server2 returns some data in json but I dont know how to read it from response...

    解决方案

    It doesn't work because bodyParser intercepts all the bodies with parsers

    这篇关于express req.pipe()不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆