GitHub API:获取单个GET请求中的所有文件夹和文件

时间:2013-02-06 14:28:10

标签: github github-api

在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,但他们没有办法做到这一点。很可能根本没有办法在一个请求中获取所有文件和文件夹,但我想在这里要求验证我没有其他选择。

2 个答案:

答案 0 :(得分:7)

使用单个请求执行此操作的唯一方法是将当前内容作为存档获取: http://developer.github.com/v3/repos/contents/#get-archive-link

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

答案 1 :(得分:1)

您必须为API提供的每个网址单独GET。您应该检查“ETag”或“Last-Modified”值的响应标题,并使用这些标题来防止每次查询网站时都必须重新下载文件。假设内容已更改,您还将保存您的ratelimit。