下载协议

Athens 在 Go 命令行接口的基础上建立了一些端点,用来于外部提供模块的代理通信。我们称这些端点为下载协议

vgo 在下载协议上的原始调研报告可以在这里找到:https://research.swtch.com/vgo-module

每个端点都对应一个顶层模块。让我们假设模块 htp 是由 acidburn 编写的。

因此,我们下面提到的端点都假设位于 acidburn/htp/@v/{endpoint}(例如:acidburn/htp/@v/list

在下面的例子中,$HOST$PORT 都是 Athens 服务的主机和端口的占位符。

版本列表

这个端点返回 Athens 中模块 acidburn/htp 的版本列表。下面的列表由换行符分割:

GET $HOST:$PORT/github.com/acidburn/htp/@v/list
v0.1.0
v0.1.1
v1.0.0
v1.0.1
v1.2.0

版本信息

GET $HOST:$PORT/github.com/acidburn/htp/@v/v1.0.0.info

这会以 JSON 格式返回关于 v1.0.0 的信息。它看起来像:

{
    "Name": "v1.0.0",
    "Short": "v1.0.0",
    "Version": "v1.0.0",
    "Time": "1972-07-18T12:34:56Z"
}

文件 Go.mod

GET $HOST:$PORT/github.com/acidburn/htp/@v/v1.0.0.mod

这会返回文件 go.mod 的版本 v1.0.0.如果 $HOST:$PORT/github.com/acidburn/htp 的 v1.0.0 版本没有依赖, 那么响应就会像这样:

module github.com/acidburn/htp

模块源

GET $HOST:$PORT/github.com/acidburn/htp/@v/v1.0.0.zip

显而易见——它会把该模块的 v1.0.0 版本的源码以 zip 格式返回。

Latest

GET $HOST:$PORT/github.com/acidburn/htp/@latest

这个端点会返回对应模块的最新版本。如果没有 latest 标签,它会根据最后一次提交的哈希值去找到对应的版本。

Fork me on GitHub