如何批量GitHub GraphQL API查询?

Eli*_*kes 4 github-api graphql

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

例如,如何将这两个查询批处理为单个请求并接收单个响应?这种技术可以用于更多的查询(例如200)吗?

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

{
  repositoryOwner(login:"github") {
    repository(name:"graphql-client") {
      description
      homepageURL
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*son 11

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

{
  repositoryOwner(login:"rails") {
    repository(name:"rails") {
      description
      homepageURL
    }
  } 
  repositoryOwner(login:"github") {
    repository(name:"graphql-client") {
      description
      homepageURL
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

{
   rails: repositoryOwner(login:"rails") {
     repository(name:"rails") {
       description
       homepageURL
     }
   } 
   graphql_client: repositoryOwner(login:"github") {
     repository(name:"graphql-client") {
       description
       homepageURL
     }
   }
 }
Run Code Online (Sandbox Code Playgroud)

看到这个解释.

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