我可以使用 GraphQL 列出 Github 的公共存储库吗?

Posted

技术标签:

【中文标题】我可以使用 GraphQL 列出 Github 的公共存储库吗?【英文标题】:Can I list Github's public repositories using GraphQL? 【发布时间】:2018-06-23 00:27:33 【问题描述】:

我正在尝试使用 GraphQL 在 Github 中列出公共存储库,因为它允许我从 Object 中准确选择我想要的信息。

使用 REST 我可以简单地通过向https://api.github.com/repositories 发出请求来列出公共存储库。这没关系,但是响应带有一堆我不需要的东西。所以,我想知道是否可以使用 GraphQL 来完成同样的工作。

问题是,我找不到任何高级存储库Object 可以使用 GraphQL 列出公共存储库。对我来说,我似乎只能使用 GraphQL 列出来自组织或用户的存储库。比如喜欢这样做:

query
    user(login: "someuser")
        repositories(first: 50)
            nodes
                name
            
            pageInfo
                hasNextPage
            
        
    

那么,我如何使用(如果有的话)Github 的 GraphQL 端点来列出 Github 的公共存储库?

我也在这条线上尝试了一些东西,使用 search,但我怀疑 Github 只有 54260 个存储库,因为 repositoryCount 变量返回给我。

query
    search(query:"name:*", type:REPOSITORY, first:50)
        repositoryCount
        pageInfo
            endCursor
            startCursor
        
        edges
            node
                ... on Repository
                    name
                
            
        
    

【问题讨论】:

在过去的几天里学到了很多关于 GraphQL 的知识,我在 Medium 上发了一篇文章总结了我的努力:medium.com/@fabiomolinar/… 【参考方案1】:

您可以在搜索查询中使用is:public


  search(query: "is:public", type: REPOSITORY, first: 50) 
    repositoryCount
    pageInfo 
      endCursor
      startCursor
    
    edges 
      node 
        ... on Repository 
          name
        
      
    
  

Try it in the explorer

【讨论】:

还有一个问题,是否可以按创建日期对结果进行排序? @FTM 您无法在搜索查询中按创建日期排序,请查看this post。在repositories 连接中请求用户存储库时,您只能按创建日期排序,请检查this post 再次感谢您。最后一个问题,我在哪里可以找到更多关于我可以使用什么来形成我的搜索查询的信息?我尝试了 Github 关于其 Repository 对象的文档,但它没有说明诸如“is:public”之类的内容或我可以在搜索查询中使用的任何其他参数。 您可以找到它here 用于搜索选项和here 用于排序 Bertrand,如果你是我的邻居,我肯定会为你付一些啤酒!再次感谢!

以上是关于我可以使用 GraphQL 列出 Github 的公共存储库吗?的主要内容,如果未能解决你的问题,请参考以下文章

里程碑的 Github Graphql 过滤器问题

使用 graphql 查询 github 项目卡片

使用 Graphql 和 Github API 获取存储库信息

如何使用Github GraphQL搜索我自己的提交?

AWS Amplify AppSync GraphQL @Auth 指令:如何禁止为公共用户列出元素

使用 github API v4 graphQL 获取提交更改的文件和补丁