- 入ってくる POST リクエストをエクスプレスで聞きたいです。
- このリクエストを別のサーバーにパイプしたい
- 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)のボディパーサーを無効にするだけです。
しかし、パイプされたリクエストから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でいくつかのデータを返しますが、応答からそれを読み取る方法がわかりません...