3

Node.js は初めてです。私は、opendata サービスへの POST 呼び出しのプロキシとして機能する小さなサーバーを構築しようとしています。次に、いくつかのことを行い、プレゼンテーション層にバインドし、最終的にブラウザに出力します。

コードは次のとおりです。

dispatcher.onGet("/metro", function(req, res) {
  var r = request({body: '<?xml version="1.0" encoding="ISO-8859-1" ?><poirequest><poi_id>87087</poi_id><lng>0</lng></poirequest>'}, function (error, response, body) { 
if (!error && response.statusCode == 200) {
   console.log('Public transformation public API called');
  }
}).pipe(res);

res.on('finish', function() {
  console.log('Request completed;');
});

}); 

http.createServer(function (req, res) {
  dispatcher.dispatch(req, res);
}).listen(1337, '0.0.0.0');
console.log('Server is listening');

ディスパッチャーは、mpm で見つけた最も単純なものです: https://npmjs.org/package/httpdispatcher 問題は、出力パイプに出力する前に、応答本文を変更 (基本的に、html コードのストリッピング) するにはどうすればよいですか?

4

1 に答える 1

4

concat-stream のようなものを使用してすべてのストリーム データを蓄積し、ブラウザに返す前に操作できるコールバックに渡すことができます。

var concat = require('concat-stream');

dispatcher.onGet("/metro", function(req, res) {
  write = concat(function(completeResponse) {
    // here is where you can modify the resulting response before passing it back to the client.
    var finalResponse = modifyResponse(completeResponse);
    res.end(finalResponse);
  });

  request('http://someservice').pipe(write);
}); 

http.createServer(dispatcher.dispatch).listen(1337, '0.0.0.0');
console.log('Server is listening');
于 2013-08-08T08:25:01.093 に答える