github - 使用 GraphQL (v4 API) 在 GitHub 中搜索代码

标签 github graphql github-api

我正在使用 GitHub 的 GraphQL API 来搜索包含特定单词的文件/代码。一个简单(人为的)搜索示例,在本例中是在位于“recipes”(存储库)的文件中为“someuser”(存储库的所有者)查找术语“beef”,如下所示:

{
  search(query: "beef repo:someuser/recipes", type: REPOSITORY, first: 10) {
    repositoryCount
    edges {
      node {
        ... on Repository {
          name
        }
      }
    }
  }
}

我在 GitHub 的 GraphQL Explorer ( https://developer.github.com/v4/explorer/ ) 中尝试了此操作,并从搜索中收到零结果,这是不正确的,因为我可以确认单词(上例中的“beef”)位于存储库的文件中:

{
  "data": {
    "search": {
      "repositoryCount": 0,
      "edges": []
    }
  }
}

当我通过curl 使用 GitHub 的 REST API (v3) 尝试此操作时,我肯定得到了结果:

curl --header 'Accept: application/vnd.github.v3.raw' https://api.github.com/search/code?q=beef+repo:someuser/recipes

...所以我知道查询(REST v3 API)是有效的,并且我的理解是 GraphQL (v4) API 中的查询字符串与 REST (v3) API 中的查询字符串相同。

我的问题是:

  1. 我是否错误地使用了 GitHub GraphQL (v4) API,或者我是否错误地指定了查询字符串,或者我是否尝试使用尚不支持的功能?
  2. 是否有人可以提供(或链接到)说明如何执行此操作的示例,以说明如何在代码中搜索特定单词?

最佳答案

尚不支持

类型:CODE。目前无法使用 graphql 搜索代码。

你的理解是对的。只是你少了一件。 您正在执行的搜索是针对类型:REPOSITORY 进行的。 如果您将搜索替换为

搜索(查询:“牛肉”,类型:REPOSITORY,第一个:10){

您将获得所有名称中包含牛肉的存储库。

关于github - 使用 GraphQL (v4 API) 在 GitHub 中搜索代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45382069/

相关文章:

visual-studio - Visual Studio 如何连接到存储库位于 GitHub 上的 Azure DevOps 工作区?

express - 如何解决 GraphQL 订阅服务器中的 webSocket 错误

graphql - 在GraphQL中,当大量使用 `resolveType`特征时,如何处理 `isTypeOf`和 `interfaces`?

github-api - 通过 GitHub API 更新 GitHub 项目 wiki

python - urllib 响应头丢失

github-api - 是否可以使用 GitHub api 为启用了 2FA 而无需访问 UI 的服务帐户创建访问 token ?

git - 如何将 svn repo 的主干镜像到 github?

git - 删除精选的提交

github - 从问题创建新分支

graphql - React-apollo 的动态突变文档