我有一个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) {
  ...
});

... 但感觉很笨重.

谢谢

推荐答案

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

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, ...)

Node.js相关问答推荐

为高流量网站优化Node.js实时通知服务

赫斯基添加命令已弃用?

Playwright - 无法在 img 标签中使用 file:// 访问本地文件

从mongodb集合中获取每分钟数据的每小时数据

如何从mongoose 对象内嵌套的数组中提取数组元素?

将 null 推入管道后,node.js 可写完成未发出

Typescript 正则表达式:过滤器返回空

错误 node :错误:绑定消息提供 16 个参数,但准备语句需要 15 个

Next.js 在我的电脑上没有构建错误,但它们在使用 Vercel 部署时发生

如何修改这个flake.nix,这样我就不用每次加载环境都加载nix包了

BrowserRouter 无法渲染组件

如何找到特定文档并更新数组中特定键的值?

配额超出了每分钟的 Sheets API 写入请求数. node .js

使用 grunt 服务器,如何将所有请求重定向到根 url?

yarn.lock 和 npm 的 package-lock 有什么区别?

在 Node.js 中的两个不同进程之间进行通信

如何从 Node.js 中的 URL 获取

Route.get() 需要回调函数,但得到对象未定义

我可以让 node --inspect 自动打开 Chrome

如何阻止 babel 将this转换为undefined(并插入use strict)