2013-02-06 37 views
11

Trong API GitHub, tôi có thể đưa ra một yêu cầu GET củaGitHub API: Fetch tất cả các thư mục và tập tin trong đơn GET Yêu cầu

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

đệ quy lấy tất cả các cây của một kho lưu trữ. Ngoài đem lại cho tôi tất cả các thư mục, nó mang lại cho tôi URL mà tôi có thể sử dụng để download các file:

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

Trong khi mảnh recursive=1 ngăn cản tôi từ phải thực hiện một yêu cầu GET mới cho mỗi thư mục trong kho , Tôi vẫn phải thực hiện cuộc gọi riêng cho từng tệp. Tôi đã xem qua các GitHub API Docs, nhưng họ không trình bày một cách để làm điều này. Rất có khả năng là không có cách nào để lấy tất cả các tệp và thư mục trong một yêu cầu, nhưng tôi muốn hỏi ở đây để xác minh rằng tôi không có tùy chọn nào khác.

+0

Vui lòng cung cấp một số thông tin tại sao bạn cần tất cả các tệp. Bạn có sử dụng chúng trên một số ứng dụng phía máy chủ hoặc được gọi trong trình duyệt này không? – jmruc

+0

Tôi cần phải nhập tất cả các tệp trong kho lưu trữ để hiển thị chúng trên trang web được liên kết của chúng. Đó là tập hợp các tệp tài liệu được cập nhật thông qua Git và được nhập vào trang web. – Scott

+0

Đã nhập bằng cách nào? Tại sao bạn cần sử dụng API và không tải xuống mã zip hoặc chỉ sao chép dự án? – jmruc

Trả lời

7

Cách duy nhất để làm điều đó với một yêu cầu duy nhất là để có được các nội dung hiện tại như một kho lưu trữ: http://developer.github.com/v3/repos/contents/#get-archive-link

Trên thực tế, đó là 2 yêu cầu kể từ khi phản ứng ban đầu là một chuyển hướng 302.

1

Bạn sẽ phải thực hiện từng cá nhân GET giây cho mỗi URL được API cung cấp. Bạn nên kiểm tra các tiêu đề trên các câu trả lời bạn nhận được cho các giá trị 'ETag' hoặc 'Được sửa đổi lần cuối' và sử dụng các giá trị đó để tránh phải tải xuống lại tệp mỗi khi trang web của bạn được truy vấn. Giả sử nội dung đã thay đổi, bạn cũng sẽ lưu tỷ lệ của mình.

Các vấn đề liên quan