Node JS:自动选择`http.get` vs`https.get`

时间:2013-03-10 01:28:40

标签: node.js get

我有一个Node JS应用程序需要下载一个文件,在运行时给出一个URL。

网址可以是http://https://

我如何最好地满足不同的协议?

目前我有:

var http = require('http');
var https = require('https');

var protocol = (parsedUrl.protocol == 'https:' ? https : http);
protocol.get(parsedUrl, function(res) {
  ...
});

......但感觉很笨重。

谢谢!

2 个答案:

答案 0 :(得分:30)

我有类似的需求,但不需要完整的请求或针库,我有以下代码(略有不同)

var adapterFor = (function() {
  var url = require('url'),
    adapters = {
      'http:': require('http'),
      'https:': require('https'),
    };

  return function(inputUrl) {
    return adapters[url.parse(inputUrl).protocol]
  }
}());
//.. and when I need it
adapterFor(url).get(url, ...)

答案 1 :(得分:16)

您可以使用一堆模块,例如requestneedle。他们将确定使用哪种协议,以及如何处理重定向(如果需要)等。