使用 GraphQL 以有效的方式获取 GitHub 登录(用户)列表的状态数据

Posted

技术标签:

【中文标题】使用 GraphQL 以有效的方式获取 GitHub 登录(用户)列表的状态数据【英文标题】:Get status data for list of GitHub logins (users) using GraphQL in efficent way 【发布时间】:2022-01-09 07:31:59 【问题描述】:

我想做的是从 Status 中获取组织中 10-40 位 GitHub 用户的特定数据。我想批量获取数据。目前,我的解决方案使用代码中的 for 循环和下面的查询来查询数据:


    user(login: "user1") 
    status 
         indicatesLimitedAvailability
         updatedAt
         createdAt

这个解决方案的缺点是我必须使用睡眠来触发 GitHub 中的每分钟 API 调用限制。

是否可以将查询转换为类似这样的内容(伪代码):


    user(login: "user1", "user2", "user3", ...) 
    status 
         indicatesLimitedAvailability
         updatedAt
         createdAt

响应中有某种列表?

【问题讨论】:

【参考方案1】:

您可以使用以下查询:


  nodes(ids: ["node_id1", "node_id2"]) 
    ... on User 
      status 
        indicatesLimitedAvailability
        updatedAt
        createdAt
      
    
  

其中node_id 是您要查询的用户的id

您可以使用以下查询获取这些信息:


  user(login: "username") 
    id
  

或者您可以通过以下查询获取组织中的所有成员


  organization(login: "org_name") 
    membersWithRole(first: 100) 
      nodes 
        login
        id
      
    
  

【讨论】:

以上是关于使用 GraphQL 以有效的方式获取 GitHub 登录(用户)列表的状态数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo gql 编写 WHERE GraphQL 查询

在 graphql 查询中包装组件时出错

Apollo GraphQL 加载查询

使用 typescript、react 和 graphql 以正确方式进行查询的问题

无法使用 Apollo 客户端以编程方式获取数据

如何识别 ReCaptcha V2 的 32 位数据站点密钥以使用 Selenium 和 Python 请求以编程方式获取有效响应?