2012-12-07 11 views
6

私はnode.jsプロキシサーバーを作成しており、別のドメインのAPIにリクエストを提供しています。レスポンスヘッダーを変更してリクエストデータを追加できるNode.jsプロキシ

node-http-proxyを使用したいと思いますが、既にa way to modify response headersが見つかりました。

しかし、条件に要求データを修正する方法があるが(すなわち、APIキーを追加)と異なる方法の要求があるかもしれないことを考慮に入れて - GETPOSTUPDATEDELETE

私はnode-http-proxyの目的を台無しにしているかもしれませんが、私の目的に適したものがありますか?

答えて

3

ミドルウェアを使用することは非常に簡単です。

var http = require('http'), 
    httpProxy = require('http-proxy'); 

var apiKeyMiddleware = function (apiKey) { 
    return function (request, response, next) { 
    // Here you check something about the request. Silly example: 
    if (request.headers['content-type'] === 'application/x-www-form-urlencoded') { 
     // and now you can add things to the headers, querystring, etc. 
     request.headers.apiKey = apiKey; 
    } 
    next(); 
    }; 
}; 

// use 'abc123' for API key middleware 
// listen on port 8000 
// forward the requests to 192.168.0.12 on port 3000 
httpProxy.createServer(apiKeyMiddleware('abc123'), 3000, '192.168.0.12').listen(8000); 

は詳細やアプローチにも、いくつかの注意事項についてはNode-HTTP-Proxy, Middlewares, and Youを参照してください。

+0

スティーブ、ありがとう!ヘッダーの意味では意味がありません。 APIトークンの追加など、リクエストデータ/ボディ自体を調整するソリューションはありますか? – aliona

+0

@aliona上記のようにrequest.bodyと同様に変更できると思いますが、使用しているAPIでAPIキーがどのように受け取られるかを教えてください。一般的に私はそれがクエリーストリングかヘッダーのいずれかにあると予想していました。 – explunit

+0

APIはリクエストメソッド 'GET'、' POST'、 'UPDATE'または' DELETE'に応じてquerystringまたはrequest本体のどちらかにapiトークンが存在することを期待しています – aliona