我正在尝试使用仅给出关键字的 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 它说“必须至少包括一个用户、组织或存储库”。我该如何解决这个问题?
您可以在不指定用户/组织/存储库的情况下进行代码搜索如果您进行身份验证。
首先,从 GitHub 网站上的个人资料生成用于此目的的个人访问令牌: 设置 -> 开发人员设置 -> 个人访问令牌 -> 生成新令牌(您可以不勾选所有访问选项,因为您只是用来发出网络请求)
现在,如果您将令牌附加到原始 GET 请求,则该请求将起作用并返回结果:
https://api.github.com/search/code?q=addClass&access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
更新:2021 年 10 月 正如下面的评论所指出的,不推荐通过查询参数传递令牌(如上所述)。您现在必须将其添加为授权标头。
例如
curl --location --request GET 'https://api.github.com/search/code?q=addClass +in:file +language:csharp' \
--header 'Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
或者用Python:
import requests
url = "https://api.github.com/search/code?q=addClass +in:file +language:csharp"
headers = {
'Authorization': 'Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
2020:如 Mark Z. 的 answer 中所述,使用身份验证 (
Authorization': 'Token xxxx'
) 允许进行 代码搜索。
get /search/code
您可以使用:
feinoujc/gh-search-cli
ghs code --extension js "import _ from 'lodash'"
或官方 GitHub CLI
gh
,(在gh auth login
之后),如issue 5117所示:
gh api --method=GET "search/code?q=filename:test+extension:yaml+org:new-org"
甚至:
gh api --method=GET search/code -f q='filename:test extension:yaml org:new-org' \
--jq '.items[] | [.repository.full_name,.path,.sha] | @tsv'
这将获得一个基于行、制表符分隔的字段列表,按以下顺序:存储库名称、文件路径、git sha。 (见
gh help formatting
)
2014(原始答案):这似乎与新限制“Beta 代码搜索 API 的新验证规则”(2013 年 10 月)
有关为了支持预期的请求量,我们正在对代码搜索 API 应用新的验证规则。从今天开始,您将需要将代码查询范围限定为一组特定的用户、组织或存储库。
所以,现在提到API搜索代码的示例:
假设你想在
中找到addClass
函数的定义。您的查询将如下所示:jQuery
https://api.github.com/search/code?q=addClass+in:file+语言:js+repo:jquery/jquery
虽然 Gihub 目前不支持没有存储库、用户或组织的代码搜索(请参阅 VonC 的答案),但 codesearch 确实通过 codesearch API 从 Github 索引了一些源代码,尽管 API 的功能不如 Github 的功能齐全。
例如,要搜索从 Github 索引的 wget 调用,请调用
curl "https://searchcode.com/api/codesearch_I/?q=wget&src=2"
可选的
src
参数选择应搜索的代码源(例如,Github、BitBucket),您可以通过更改 codesearch UI 中分面搜索的参数来找到源的整数值。 Github 的 src
当前值为 2。
您可以通过查看结果项的
repo
属性来验证上面示例返回的结果是否来自 github.com。