express req.pipe()不起作用 [英] express req.pipe() does not work
问题描述
现在我有以下代码:
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使用解析器拦截所有的物体
- I want to listen to incoming POST request in express.
- I want to pipe this request to another server
- 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屋!