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を調べましたが、これを行う方法が示されていません。1回のリクエストですべてのファイルとフォルダを取得する方法がない可能性が非常に高いですが、他に選択肢がないことを確認するためにここで質問したいと思います。

4

2 に答える 2

9

単一のリクエストでそれを行う唯一の方法は、現在のコンテンツをアーカイブとして取得することです: https://docs.github.com/en/rest/reference/repos#download-a-repository-archive

最初の応答が 302 リダイレクトであるため、実際には 2 つの要求です。

于 2013-02-06T18:39:24.133 に答える
1

GETAPI によって提供されるこれらの URL ごとに個別の を作成する必要があります。'ETag' または 'Last-Modified' の値について取得した応答のヘッダーを確認し、それらを使用して、Web サイトがクエリされるたびにファイルを再ダウンロードする必要がないようにする必要があります。コンテンツが変更されたと仮定すると、レート制限も保存されます。

于 2013-02-06T16:27:18.707 に答える