如何批处理 GitHub GraphQL API 查询?

How to batch GitHub GraphQL API queries?

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

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

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

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

(GitHub GraphQL API 可以在 https://developer.github.com/early-access/graphql/explorer/ 进行实验)

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

{
  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

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