【问题标题】:obtain List of dart versions via http request (or similar)通过 http 请求(或类似)获取 dart 版本列表
【发布时间】:2020-12-21 10:09:43
【问题描述】:

我正在尝试构建一个 cli 应用程序来显示 dart 版本列表,并允许用户选择要安装的版本,然后在它们之间切换。

注意:有一个 Flutter 工具 (fvm) 可以在 Flutter 版本(和嵌入式 dart 工具)之间切换,但该工具专门用于 dart,需要版本和通道。

fvm 工具使用以下端点: https://storage.googleapis.com/flutter_infra/releases/releases_linux.json

但我找不到等价物。

是否有任何方法可以获取每个 dart 通道的版本列表。

我找到了:

https://storage.googleapis.com/dart-archive/channels

但您需要知道完整的 url,因为我找不到任何提供列表的端点。

我希望避免屏幕抓取。

【问题讨论】:

    标签: dart version


    【解决方案1】:

    您可以看到Dart Archive Page 如何检索所有信息并使用它们的端点:

    端点以如下格式返回:

    {
      "kind": "storage#objects",
      "prefixes": [
        "channels/<stable|beta|dev>/release/1.11.0/",
        ...,
        "channels/<stable|beta|dev>/release/2.9.3/",
        "channels/<stable|beta|dev>/release/29803/", // You might need to filter out results such as this
        ...,
        "channels/<stable|beta|dev>/release/latest/"
        ]
    }
    

    注意:结果没有以任何方式排序

    网址:

    https://www.googleapis.com/storage/v1/b/dart-archive/o?delimiter=%2F&amp;prefix=channels%2F&lt;stable|beta|dev&gt;%2Frelease%2F&amp;alt=json

    &lt;stable|beta|dev&gt; 替换为您想要其信息的版本。

    如果您需要收集有关您可以使用的版本的信息:

    https://storage.googleapis.com/dart-archive/channels/&lt;stable|beta|dev&gt;/release/&lt; VERSION NUMBER | latest&gt;/VERSION

    这将返回一个 json 对象,如:

    {
      "date": "2020-11-11", 
      "version": "2.10.4", 
      "revision": "7c148d029de32590a8d0d332bf807d25929f080e"
    }     
    

    【讨论】:

      【解决方案2】:

      SDK 的 github 存档 (https://github.com/dart-lang/sdk/tags) 的标签似乎对版本进行了合理有用的标记。缺点是它的重量为 1.3GB,而且没有简单的方法来获得一个可行的浅层克隆。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-16
        • 2013-04-06
        • 2021-02-13
        • 2015-03-21
        • 2020-04-11
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多