Есть ли у GitHub jsonp api для источника файла? Я знаю, что у BitBucket есть, но я не могу найти никакой информации для GitHubs (если у них есть).GitHub jsonp исходный код api
Не так ли? Если нет, то bummer ...
Есть ли у GitHub jsonp api для источника файла? Я знаю, что у BitBucket есть, но я не могу найти никакой информации для GitHubs (если у них есть).GitHub jsonp исходный код api
Не так ли? Если нет, то bummer ...
Я не думаю, что у GitHub есть API для извлечения источника файла. У них действительно есть JSONP обратных вызовов, хотя, указав обратного вызова = Funciton после любого API вызова (т.е. curl https://api.github.com?callback=foo
)
Вы могли бы, вероятно, использовать Trees API, чтобы найти исходные файлы, присутствующие в хранилище на определенном обязательстве (глава ведущая ветка). Тогда вы можете просто приобрести источник, используя URL-адрес для необработанной версии файла (то есть, https://raw.github.com/robbyrussell/oh-my-zsh/master/lib/directories.zsh)
Заявленных в GitHub API documentation, любой вызов поддерживает режим invokation JSONP:
Вы может отправить параметр
?callback
любому вызову GET, чтобы получить результаты, завернутые в функцию JSON. Это обычно используется, когда браузеры хотят встраивать контент GitHub в веб-страницы, обойдя проблемы с перекрестными доменами. Ответ включает в себя тот же вывод данных, что и обычный API, а также соответствующую информацию заголовка HTTP.
Если для того, чтобы получить текущий источник файла (или любую версию этого), вы должны либо знать SHA
в Blob
она хранится в. См Git Database API для получения дополнительной информации об этом тема.
Более чем часто один из них не знает SHA, а только относительный путь к файлу в рабочем каталоге.
Тогда вы должны выполнить следующие шаги
Выберите коммит ша из списка
Получить дерево он указывает и рекурсивно перечислить все записи (Деревья и BLOB)
Найдите кляксу соответствия найденного пути, найти свой алгоритм SHA и применить первый процесс
Существует АНИ, чтобы получить содержимое данных от 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
Если вы не установили заголовок accepts, вы получите обратно некоторый JSON с содержимым файла, закодированным в base64. Вам придется декодировать это, что очень просто в node.js, но больше боли в браузере. Вы легко можете найти декодеры base64 в javascript в других вопросах на stackoverflow. Одно замечание: код base64, который вы возвращаете из github, имеет символы новой строки в нем, чтобы сделать его форматированным, и многие декодеры base64 не могут справиться с новыми символами, поэтому вам может потребоваться удалить их или изменить декодер.
Возможно, вы просто хотите получить контент и не нуждаетесь в другом материале в json (например, sha и length и т. Д.), Чтобы упростить вашу жизнь, установив заголовок Accept на application/vnd.github.3.raw
.
Вот пример с принимает заголовок с помощью завиток:
curl -i https://api.github.com/repos/mono/monodevelop/contents/README --header "Accept: application/vnd.github.3.raw"
Теперь, если вы используете узел или завиток, который, вероятно, хорошо, но если вы работаете в браузере, чтобы сделать вас нужно будет использовать CORS. Github разрешает доступ только с хостов, зарегистрированных в OAuth Applications. Это не особенно сложно сделать, но для моей usecase (bookmarketlet) это не вариант.
Существует способ получить доступ без использования CORS, и это с помощью JSONP, вы можете добавить, например, ?callback=_processGithubResponse
, чтобы получить вывод javascript, подходящий для включения с тегом скрипта (который вызывает функцию с именем _processGithubResponse с ответом). К сожалению, вы не можете установить заголовок accepts, поэтому в этом случае вы застряли с декодированием base64.
Если вы используете node.js, я бы порекомендовал вам использовать node-github, что делает API несколько проще в использовании.
не работает с текущей версией api – rakesh
Это очень полезно! Спасибо!! –