47

我有一个需要下载文件的 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) {
  ...
});

……但感觉很笨拙。

谢谢!

4

2 回答 2

52

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

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, ...)
于 2016-07-19T18:26:47.993 回答
17

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

于 2013-03-12T11:36:08.800 回答