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

问题描述 投票:0回答:3

我正在尝试使用仅给出关键字的 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 github-api
3个回答
29
投票

您可以在不指定用户/组织/存储库的情况下进行代码搜索如果您进行身份验证

首先,从 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)

16
投票

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


12
投票

虽然 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。

© www.soinside.com 2019 - 2024. All rights reserved.