Существует API для получения содержимого данных с github.Он является частью v3 github API .
. Вы отправляете запрос на
https://api.github.com/repos/{username}/{repository name}/contents/{filepath and name}
например, https://api.github.com/repos/mono/monodevelop/contents/README
Если вы не установили заголовок acceptвы получите обратно JSON с содержимым файла, закодированным в base64.Вы должны будете расшифровать это, что очень легко в node.js, но больше боли в браузере.Вы можете найти base64 декодеры в javascript в других вопросах относительно stackoverflow довольно легко.Стоит заметить, что код base64, который вы получаете от github, содержит символы новой строки, чтобы он хорошо форматировался, и многие декодеры base64 не справляются с новыми строками, поэтому вам может потребоваться удалить их или изменить декодер.
Возможно, вам просто нужен контент, и вам не нужны другие вещи в json (например, sha, length и т. Д.), Чтобы вы могли упростить свою жизнь, установив заголовок Accept на application/vnd.github.3.raw
.
Вот пример с заголовком accept, использующим curl:
curl -i https://api.github.com/repos/mono/monodevelop/contents/README --header "Accept: application/vnd.github.3.raw"
Теперь, если вы используете узел или curl, это, вероятно, хорошо, но если вы работаете внутри браузера, сделать это вынужно будет использовать CORS.Github разрешает доступ только с хостов, которые зарегистрированы как приложения OAuth.Это не особенно сложно сделать, но для моего сценария использования (букмаркетлет) это было невозможно.
Существует способ получить доступ без использования CORS, и с помощью JSONP вы можете добавитьнапример, ?callback=_processGithubResponse
, чтобы получить вывод JavaScript, подходящий для включения в тег скрипта (который вызывает функцию с именем _processGithubResponse с ответом).К сожалению, вы не можете установить заголовок accept для этого, поэтому в этом случае вы застряли с декодированием base64.
Если вы используете node.js, я бы порекомендовал вам использовать node-github , что делает API немного проще в использовании.