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

Chr*_*let 36 get node.js

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

URL可以是http://https://.

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

目前我有:

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

var protocol = (parsedUrl.protocol == 'https:' ? https : http);
protocol.get(parsedUrl, function(res) {
  ...
});
Run Code Online (Sandbox Code Playgroud)

......但感觉笨重.

谢谢!

Kha*_*din 36

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

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, ...)
Run Code Online (Sandbox Code Playgroud)


rob*_*lep 18

你可以使用一堆模块,比如请求.他们将确定使用哪种协议,以及如何处理重定向(如果需要)等.

  • 谢谢!我希望 Node 可能有内置的东西,但不用担心。我很感谢您将我指向 Request 和 Needle - 它们看起来很棒。 (2认同)