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

时间:2014-06-10 04:19:03

标签: github github-api

我尝试使用仅提供关键字的GitHub API V3搜索某些代码,而不是限制用户,组织或存储库。

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

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

3 个答案:

答案 0 :(得分:8)

虽然Gihub目前不支持没有回购,用户或组织的代码搜索(请参阅VonC的回答), codesearch 确实通过the codesearch API从Github索引某些来源,尽管API少了功能齐全的比Github的。

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

curl "https://searchcode.com/api/codesearch_I/?q=wget&src=2"

可选src参数选择应搜索的代码源(例如,Github,BitBucket),您可以通过更改{{3}中的分面搜索参数来找到源的整数值。 }。 Github的src的当前值为2。

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

答案 1 :(得分:6)

这似乎与新的限制相关" New Validation Rule for Beta Code Search API" (2013年10月)

  

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

所以,API search code的例子现在提到:

  

假设您要在addClass中找到jQuery函数的定义。您的查询看起来像这样:

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

答案 2 :(得分:5)

如果您进行身份验证 ,则无需指定用户/组织/仓库 即可进行代码搜索。

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

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

https://api.github.com/search/code?q=addClass&access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx