Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub API:在单个GET请求中获取所有文件夹和文件_Github_Github Api - Fatal编程技术网

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

GitHub API:在单个GET请求中获取所有文件夹和文件,github,github-api,Github,Github Api,在GithubAPI中,我可以发出 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":

在GithubAPI中,我可以发出

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请求,但我仍然必须对每个文件进行单独调用。我已经看过了,但他们没有提出一个方法来做到这一点。很可能没有一种方法可以在一个请求中获取所有文件和文件夹,但我想在这里询问,以验证我没有其他选择。

您必须为API提供的每个URL设置单独的
获取
。您应该检查收到的响应的标题中的“ETag”或“Last Modified”值,并使用这些值防止每次查询您的网站时都必须重新下载文件。假设内容已更改,您还将保存您的费率限制。

通过单个请求执行此操作的唯一方法是将当前内容作为存档:


实际上,这是两个请求,因为最初的响应是302重定向。

请提供一些信息,说明为什么需要所有文件。您是在服务器端应用程序上使用它们,还是在浏览器中调用它们?我需要导入存储库中的所有文件,以便在其关联的网站上显示它们。它是通过Git更新并导入网站的文档文件集合。如何导入?为什么您需要使用API而不下载zip,或者只是克隆项目?我现在正在导入zip文件,如果需要重新使用REST API,我将返回到这个问题。还有,我为什么要这么做真的很重要吗?我只是想知道怎么做。。。