13

在 GitHub API 中,我可以发出 GET 请求

https://api.github.com/repos/owner/repo/git/trees/master?recursive=1

递归地获取存储库的所有树。除了提供所有目录之外,它还提供了可用于下载单个文件的 URL:

[...]
{
    "mode": "100644",
    "type": "blob",
    "sha": "abc1234",
    "path": "path/to/file.txt",
    "size": 104361,
    "url": "https://api.github.com/repos/owner/repo/git/blobs/abc1234"
},
[...]

虽然该recursive=1部分使我不必为存储库中的每个目录发出新的 GET 请求,但我仍然必须对每个文件进行单独调用。我浏览了GitHub API Docs,但他们没有提供一种方法来做到这一点。很可能根本没有办法在一个请求中获取所有文件和文件夹,但我想在这里询问以确认我没有其他选择。

4

2 回答 2

9

使用单个请求执行此操作的唯一方法是将当前内容作为存档获取: https ://docs.github.com/en/rest/reference/repos#download-a-repository-archive

实际上,这是 2 个请求,因为初始响应是 302 重定向。

于 2013-02-06T18:39:24.133 回答
1

您必须为GETAPI 提供的每个 URL 创建单独的 s。您应该检查收到的响应的标题中的“ETag”或“Last-Modified”值,并使用它们来防止每次查询您的网站时都必须重新下载文件。假设内容已更改,您还将保存您的速率限制。

于 2013-02-06T16:27:18.707 回答