2012-02-14 25 views
5

Tôi cần lấy nội dung của tệp được lưu trữ trong repo GitHub. Tôi muốn nhận được một phản ứng JSON với siêu dữ liệu cùng với nó. Tôi đã thử nhiều URL với cURL để chỉ nhận được phản hồi của {"message":"Not Found"}. Tôi chỉ cần cấu trúc URL. Nếu nó quan trọng, đó là từ một tổ chức trên GitHub. Dưới đây là những gì tôi nghĩ nên làm việc nhưng không:Cách nhận tệp qua GitHub API

http://api.github.com/repos/<organization>/<repository>/git/branches/<branch>/<file> 
+1

xem http://stackoverflow.com/questions/9240961/github-jsonp-source-code-api/9241535#9241535 – nulltoken

+0

Ba yêu cầu cho một phản ứng JSON đơn giản? Tốt lawd. Không trực quan chút nào. Chắc chắn có một cách thanh lịch hơn. –

+0

Đây có lẽ là một trong những bit yếu nhất trong API của họ. Bạn có thể điều hướng cấu trúc bằng cách sử dụng API cây của họ (tại dữ liệu Git trong tài liệu). Để sử dụng bạn sẽ cần một sha. Bạn có thể đào nó ra khỏi các nhánh repo. Có lẽ nó dễ dàng hơn cho bạn để sử dụng raw.github.com như thế này? raw.github.com/:user/:repo/:branch/:filename. Bạn có thể dễ dàng kết hợp hai phương pháp này để tìm ra nếu một số tệp tồn tại và sau đó tìm nạp nó. –

Trả lời

11

Như mô tả (tọa lạc tại http://developer.github.com/v3/repos/contents/) nói:

/Repos /: chủ sở hữu /: repo/nội dung /: đường dẫn

Một mã ajax sẽ là:

$.ajax({ 
    url: readme_uri, 
    dataType: 'jsonp', 
    success: function(results) 
    { 
     var content = results.data.content; 
    }); 

Thay thế readme_uri bằng đường dẫn/repos /: chủ sở hữu /: repo/contents/:.

+0

Đây có phải là mới không? Tôi thề là không có ở đây khi tôi hỏi. Tôi đã xem tất cả các trang dev về điều này. Cảm ơn. –

+2

Có vẻ như GitHub đang gửi nội dung tệp được mã hóa trong Base64 ... – taseenb

+9

@taseenb sử dụng 'https: //raw.githubusercontent.com/: owner /: repo/master /: path' để lấy nguyên (nhị phân, không Base64) –

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