2013-02-06 12 views
11

W API GitHub, mogę wysłać żądanie GETGitHub API: Pobiera wszystkie foldery i pliki w jednolitym żądanie GET

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

rekursywnie sprowadzić wszystkich drzew repozytorium. Oprócz dając mi wszystko z katalogów, to daje mi adresy URL, które można użyć, aby pobrać poszczególne pliki:

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

Choć recursive=1 kawałek powstrzymuje mnie od konieczności dokonywania nowego żądania GET dla każdego katalogu w repozytorium Nadal muszę wykonać indywidualne połączenie dla każdego pliku. Przejrzałem GitHub API Docs, ale nie przedstawiają sposobu, aby to zrobić. Jest bardzo prawdopodobne, że po prostu nie ma sposobu na pobranie wszystkich plików i folderów w jednym żądaniu, ale chciałem zapytać tutaj, aby sprawdzić, czy nie mam innej opcji.

+0

Podaj informacje, dlaczego potrzebujesz wszystkich plików. Czy używasz ich w niektórych aplikacjach po stronie serwera, czy jest to nazywane w przeglądarce? – jmruc

+0

Potrzebuję zaimportować wszystkie pliki w repozytorium, aby wyświetlić je w powiązanej witrynie internetowej. Jest to zbiór plików dokumentacji, które są aktualizowane przez Git i importowane do witryny internetowej. – Scott

+0

Zaimportowane w jaki sposób? Dlaczego musisz używać interfejsu API, a nie pobierać zip, czy po prostu klonować projekt? – jmruc

Odpowiedz

1

Dla każdego z adresów URL udostępnianych przez interfejs API należałoby utworzyć indywidualne GET. Powinieneś sprawdzić nagłówki odpowiedzi, które otrzymałeś dla wartości "ETag" lub "Ostatnia modyfikacja" i użyć ich, aby zapobiec konieczności ponownego pobierania pliku za każdym razem, gdy twoja strona internetowa jest pytana. Zakładając, że zawartość się zmieniła, również zapiszesz swój ratelimit.