GitHub有一个jsonp api文件的来源吗?我知道BitBucket有,但我找不到GitHubs的任何信息(假设他们有一个)。GitHub jsonp源代码api
他们不是吗?如果没有,那么无赖...
GitHub有一个jsonp api文件的来源吗?我知道BitBucket有,但我找不到GitHubs的任何信息(假设他们有一个)。GitHub jsonp源代码api
他们不是吗?如果没有,那么无赖...
我不认为GitHub有一个API来提取文件的来源。他们有JSONP回调,虽然通过任何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指出,任何呼叫支持JSONP invokation模式:
你可以向任何GET调用发送参数
?callback
以将结果包装在JSON函数中。这通常用于浏览器通过解决跨域问题来将GitHub内容嵌入到网页中。响应包含与常规API相同的数据输出,以及相关的HTTP标头信息。
如果为了检索文件的电流源(或它的任何版本),你必须要么知道它被存储在Blob
的SHA
。见Git Database API有关此的详细信息话题。
通常情况下,人们不知道SHA,但只知道工作目录中文件的相对路径。
那么你就必须遵循以下步骤
从列表中选择
找回它指向的树和递归地列出每个条目(树木和斑点)
找到你的斑点匹配的搜索路径,找出其SHA和应用第一过程
有一个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
除非你设定的接受头,你会收到一些JSON用base64编码的文件内容。您必须对此进行解码,这在node.js中非常简单,但在浏览器中更加痛苦。你可以在其他问题上很容易地找到javascript中的base64解码器。有一点要注意,以base64编码你从GitHub回到中有换行符,使其很好地格式化和许多的base64解码器无法应对新行,所以你可能需要将其删除或修改解码器。
您可能只是想要内容而不需要json中的其他内容(如sha和长度等),因此您可以通过将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应用程序的主机访问。这样做并不是特别困难,但对于我的用例(书库)来说,这不是一个选项。
有一种方式来获得,而无需使用CORS访问,这是JSONP,你可以添加例如?callback=_processGithubResponse
来获取适合包括脚本标记(即呼叫被叫_processGithubResponse与响应函数)的JavaScript输出。不幸的是,你不能设置接受头,所以你在这种情况下坚持解码base64。
如果使用Node.js的,我会建议你使用node-github这使得API稍微更容易使用。
不适用于当前版本的api – rakesh 2017-05-13 08:44:21
这是SOOO有帮助!谢谢!! – 2012-06-14 21:07:03