node.jsの練習(v0.4対応)
v0.3.6でhttp.request() と http.get()が導入された。
http.Clientインスタンスを作成しclient.request()を呼ぶ従来のインターフェイスは非推奨とのこと。
var http = require('http'); http.createServer(function (req, res) { var proxy_headers = req.headers, proxy_req, options; function _options() { var host = req.headers.host, h, _host, _port; if(host.indexOf(':') > 0){ h = host.split(':'); _host = h[0]; _port = parseInt(h[1],10); } else { _host = host; _port = 80; } return { host: _host, port: _port, method: req.method, path: req.url, headers: req.headers }; } function _proxy_response(proxy_res) { var headers = proxy_res.headers; res.writeHead(proxy_res.statusCode, headers); proxy_res.on('data', function(chunk) { res.write(chunk); }); proxy_res.on('end', function() { res.end(); }); } options = _options(proxy_headers.host); if (req.method === 'GET'){ proxy_req = http.get(options, _proxy_response); } else if(req.method === 'POST'){ proxy_req = http.request(options, _proxy_response); req.on('data',function(chunk){ proxy_req.write(chunk); }); req.on('end',function(){ proxy_req.end(); }); } }).listen(8080, "localhost");