我尝试使用仅提供关键字的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 它说"必须包括至少一个用户,组织或存储库"。我该如何解决这个问题?
答案 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