- 我想以express的速度收聽傳入的POST請求。
- 我想管這個請求到另一臺服務器
- 我想收到快件處理程序內響應(我不想管反應表達資源流)
現在我有以下代碼:express req.pipe()不起作用
app.post('server1',function(req,res,next){
var request = require('request');
req.pipe(request.post('server2')).pipe(res);
}
所以這不起作用 - 請求甚至沒有管道到服務器2 - 我檢查它,並沒有傳入的請求。
我解決點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 /服務器1)。
但我仍然不知道如何從管道請求獲得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和標題等,但不包含機身 - 我怎麼能從res2
這個對象中得到這個? /server2
返回JSON的一些數據,但我不知道如何從響應讀它...
這可能意味着'req'已經被讀到完成 - 它的[''end''](http://nodejs.org/api/stream.html#stream_event_end) - 可能通過'bodyParser ()'。在那之後,一個流不會重新啓動一個新的'.pipe()'。 –
那麼如何讓它不被讀取完成?或者我如何從已經讀取的請求中創建一個流?我需要管道請求,因爲有文件上傳那裏... – user606521
我編輯我的問題 - 你對'bodyParser'的評論幫了我很多 - 我只需要解決最後一點(3)。 – user606521