GitHub jsonp源代码api

GitHub jsonp源代码api,github,jsonp,Github,Jsonp,GitHub是否有用于文件源的JSONPAPI?我知道BitBucket有,但我找不到GitHubs的任何信息(假设他们有) 不是吗?如果没有,那么糟糕…我认为GitHub没有提取文件源的API。但是,通过在任何API调用(即curl)之后指定callback=function,它们确实有jsonp回调https://api.github.com?callback=foo) 您可能会使用API在某个提交(主分支的负责人)时查找存储库中存在的源文件。然后,您可以通过使用文件原始版本的URL(即)获

GitHub是否有用于文件源的JSONPAPI?我知道BitBucket有,但我找不到GitHubs的任何信息(假设他们有)


不是吗?如果没有,那么糟糕…

我认为GitHub没有提取文件源的API。但是,通过在任何API调用(即
curl)之后指定callback=function,它们确实有jsonp回调https://api.github.com?callback=foo

您可能会使用API在某个提交(主分支的负责人)时查找存储库中存在的源文件。然后,您可以通过使用文件原始版本的URL(即)获取源代码。

中声明,任何调用都支持JSONP调用模式:

您可以向任何GET调用发送
?回调
参数,以将结果包装在JSON函数中。当浏览器希望通过绕过跨域问题在网页中嵌入GitHub内容时,通常会使用这种方法。响应包括与常规API相同的数据输出,以及相关的HTTP头信息

如果要检索文件(或其任何版本)的当前源,您必须知道它存储在
Blob
中的
SHA
。有关此主题的更多信息,请参阅

  • 语法:GET/repos/:user/:repo/git/blobs/:sha
  • 示例:从MonoDevelop检索最新(至今)自述文件
通常,人们不知道SHA,只知道工作目录中文件的相对路径

然后,您必须遵循以下步骤

从列表中选择一个提交sha

  • 语法:GET/repos/:user/:repo/git/commits
  • 示例:检索Git项目的提交列表
检索它指向的树并递归列出每个条目(树和blob)

  • 语法:GET/repos/:user/:repo/git/trees/:sha?recursive=1
  • 示例:

找到与搜索路径匹配的Blob,找到它的SHA并应用第一个进程

有一个API可以从github获取数据内容。这是我们的一部分

你请求

https://api.github.com/repos/{username}/{repository name}/contents/{filepath and name}
e、 g

除非您设置accepts头,否则您将收到一些带有base64编码的文件内容的JSON。您必须对其进行解码,这在node.js中非常容易,但在浏览器中更麻烦。在stackoverflow的其他问题中,可以很容易地找到javascript中的base64解码器。需要注意的一点是,从github返回的base64代码中包含新行字符以使其格式良好,并且许多base64解码器无法处理新行,因此您可能需要删除它们或修改解码器

您可能只需要内容,而不需要json中的其他内容(如sha和length等),因此可以通过将Accept头设置为
application/vnd.github.3.raw
来简化您的工作

下面是一个使用curl的accepts头的示例:

curl -i https://api.github.com/repos/mono/monodevelop/contents/README --header "Accept: application/vnd.github.3.raw"
现在,如果您使用的是node或curl,这可能很好,但是如果您在浏览器中运行,则需要使用CORS。Github只允许从注册为OAuth应用程序的主机进行访问。这样做并不特别困难,但对于我的用例(书签集),这不是一个选项

有一种方法可以在不使用CORS的情况下获得访问权限,那就是使用JSONP,您可以添加例如
?callback=\u processGithubResponse
,以获得适合包含在脚本标记中的javascript输出(该标记使用响应调用名为\u processGithubResponse的函数)。不幸的是,您不能在上面设置accepts头,所以在这种情况下,您只能解码base64


如果您使用的是node.js,我建议您使用它,这会使API稍微更易于使用。

kybernetikos有一个很好的答案,但是如果您想要更快更简单的设置,您也可以尝试RawGit


它直接从GitHub为原始文件提供适当的内容类型头。只要粘贴到您的文件或gist url中,它就会为您提供用于生产和开发的API url。

这是一个老问题,现在您可以通过以下方式找到源代码:

用户/存储库/分支/目录/文件

e、 g。