如何批处理 GitHub GraphQL API 查询?

Posted

技术标签:

【中文标题】如何批处理 GitHub GraphQL API 查询?【英文标题】:How to batch GitHub GraphQL API queries? 【发布时间】:2017-02-01 16:16:42 【问题描述】:

如何将多个查询批处理成对 GitHub 的 GraphQL API 的单个请求?

例如,您如何将这 2 个查询批处理为一个请求并接收一个响应?这种技术是否适用于更多查询(比如 200 个)?


  repositoryOwner(login:"rails") 
    repository(name:"rails") 
      description
      homepageURL
    
  



  repositoryOwner(login:"github") 
    repository(name:"graphql-client") 
      description
      homepageURL
    
  

(可以在https://developer.github.com/early-access/graphql/explorer/ 试用 GitHub GraphQL API)

【问题讨论】:

【参考方案1】:

您需要将两个字段的调用包装在一个查询中:


  repositoryOwner(login:"rails") 
    repository(name:"rails") 
      description
      homepageURL
    
   
  repositoryOwner(login:"github") 
    repository(name:"graphql-client") 
      description
      homepageURL
    
  

这仍然会失败,因为现在输出中有两个具有相同名称(repositoryOwner)的字段,因此您需要为它们起别名:


   rails: repositoryOwner(login:"rails") 
     repository(name:"rails") 
       description
       homepageURL
     
    
   graphql_client: repositoryOwner(login:"github") 
     repository(name:"graphql-client") 
       description
       homepageURL
     
   
 

见this explanation。

如果您可以为每个查询生成一个唯一的别名,那么是的,这种技术应该可以正常工作。

【讨论】:

以上是关于如何批处理 GitHub GraphQL API 查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Github API v4 (graphql) 与 javascript XMLHttpRequest 一起使用

GitHub API v4:如何使用分页进行遍历? (GraphQL)

如何使用 Github GraphQL Api 创建问题和标签?

如何使用 HttpUrlConnect 使用 java 查询 Github graphql API

php PHP - 如何使用Github GraphQL API获取Gists列表

Github GraphQL API:如何收集特定用户的存储库?