获取所有存储库查询 Github v4 API

Posted

技术标签:

【中文标题】获取所有存储库查询 Github v4 API【英文标题】:Getting all repositories query Github v4 API 【发布时间】:2021-08-29 01:03:54 【问题描述】:

我正在尝试使用 Github v4 API 获取我的所有存储库,但我找不到任何名为 repositories 的查询。我找到了类似的方法:

export const query = gql`
   query repositories() 
        search(query: "user:userName", type: REPOSITORY, first: 50) 
        repositoryCount
        edges 
            node 
                ... on Repository 
                name
                
            
        
    

但这不是我想要的,因为我必须提供我应该通过另一个查询获得的用户名(我不想自己输入)

有没有办法只使用一个查询来获取我的所有存储库?我认为这应该很容易,但我找不到方法。

【问题讨论】:

【参考方案1】:

我找到了查询:

export const query = gql`
   query repositories  
    viewer  
        login
        repositories(first: 30) 
            edges 
                node 
                name
                
            
        
    

【讨论】:

【参考方案2】:

有不同的方法来实现这一点。您可以在查询中定义参数,然后传递它们。在下面的示例中,将 usersName 设置为您的用户名,将 first 设置为 50 或任何需要的值,请记住,GitHub API 上的 first 存在限制(值必须介于 1 到 100 之间),您可以找到 @ 987654321@.

在本例中,如果userName 不匹配任何条目,则返回错误。

export const query = gql`
    query repositories ($userName: String!, $first: Int)
        user(login: $userName) 
          repositories(first: $first) 
            nodes 
              name
            
          
        
      
`;

您可以在示例中使用search 并将变量传递给查询。但是,这样查询将返回来自用户的存储库,这些用户的名称或用户名匹配或包含提供的searchText 的子字符串。如果与searchText 不匹配,此查询将不会返回错误。

export const query = gql`
    query ($searchText: String!)  
      search(query: $searchText, type: USER, first: 1) 
          nodes 
              ... on User 
                repositories(first: 50) 
                  nodes 
                    name
                  
                
              
            
        
    
`;

如果您只对自己的存储库感兴趣,那么也可以使用您自己的答案。

【讨论】:

以上是关于获取所有存储库查询 Github v4 API的主要内容,如果未能解决你的问题,请参考以下文章

GitHub 的 GraphQL API:如何获取我对特定公共存储库所做的所有提交?

使用 GitHub GraphQL API v4 查询单个存储库中的所有提交

GitHub API v4 Graphql:获取当前授权用户组织及其存储库

通过 Github API 从 Github 存储库中获取所有文件名

如何使用 GitHub GraphQL API 获取具有特定主题的所有存储库?

Github V4 graphql - 无法获取组织用户贡献信息