node.js - express req.pipe() 不起作用

标签 node.js express

  1. 我想在 express 中收听传入的 POST 请求。
  2. 我想将此请求传送到另一台服务器
  3. 我想在 express 处理程序中接收响应(我不想通过管道将响应发送到 express 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);
    }
});

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

但我仍然不知道如何从管道请求中获取 json 响应正文 - 我有以下代码:

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 和 header 等,但它不包含正文 - 我如何从 res2 对象中获取它? /server2 在 json 中返回一些数据,但我不知道如何从响应中读取它...

最佳答案

它不起作用,因为bodyParser用解析器拦截了所有的body

关于node.js - express req.pipe() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728039/

相关文章:

arrays - Node 推送变量动态

node.js - Bigbluebutton设置html5开发人员客户端登录以与join api开会调用空html响应

javascript - 在express.Router()中渲染 View

node.js - session 结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 来验证用户身份。

javascript - 如何在 Node js 中返回对 REST api 的响应

node.js - Socket IO Node Angular 聊天服务

javascript - 浏览器在正常启动时是否可以在执行过程中变成 headless,反之亦然?

javascript - Node.js async.Detect 如果没有结果

angularjs - 在 Express 中将数据响应到 Slack url

node.js - nodejs + pg 用回调做 CRUD