如何使用GitHub API在GitHub中搜索代码?

use*_*417 10 github github-api

我试图使用仅给出关键字的GitHub API V3搜索一些代码,而不是用户,组织或存储库限制.

例如,如果我想搜索包含关键字"addClass"的所有代码片段,结果将是 https://github.com/search?q=addClass&type=Code&ref=searchresults而不使用GitHub API.

但是我如何通过GitHub API做同样的事情呢?我试过https://api.github.com/search/code?q=addClass 它说"必须包括至少一个用户,组织或存储库".我怎样才能解决这个问题?

Mar*_*sky 11

您可以在不指定用户/组织/存储库的情况下进行代码搜索 如果您进行了 authentication ,则

首先,从您在 GitHub 网站上的个人资料中生成用于此目的的个人访问令牌:设置 -> 开发人员设置 -> 个人访问令牌 -> 生成新令牌(您可以不勾选所有访问选项,因为您只是在使用发出网络请求)

现在,如果您将令牌附加到它,您的原始 GET 请求将起作用并返回结果:

https://api.github.com/search/code?q=addClass&access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)


And*_*ead 10

虽然Gihub目前不支持没有repo,用户或组织的代码搜索(参见VonC的回答),但codesearch确实通过codesearch API为Github中的一些源编制索引,尽管API的功能不如Github.

例如,要搜索从Github索引的wget调用,请调用

curl "https://searchcode.com/api/codesearch_I/?q=wget&src=2"
Run Code Online (Sandbox Code Playgroud)

可选src参数选择应搜索的代码源(例如,Github,BitBucket),并且可以通过在codesearch UI中更改分面搜索的参数来找到源的整数值.srcGithub 的当前值是2.

您可以通过查看repo结果项的属性来验证上述示例的返回结果是否来自github.com .


Von*_*onC 7

这似乎与新的限制" Beta代码搜索API的新验证规则 "有关(2013年10月)

为了支持预期的请求量,我们将新的验证规则应用于Code Search API.从今天开始,您需要将代码查询的范围限定为特定的一组用户,组织或存储库.

因此,API搜索代码的示例现在提到:

假设你想在里面找到addClass函数的定义jQuery.您的查询看起来像这样:

https://api.github.com/search/code?q=addClass+in:file+language:js+repo:jquery/jquery