如何级联GraphQL?

如何级联GraphQL?,graphql,apollostack,Graphql,Apollostack,我目前正在使用“客户端GraphQL服务器”将RESTful端点包装到GraphQL端点 但如果服务器端也是GraphQL端点呢?如何以轻量级方式在GraphQL服务器中对另一个GraphQL服务器进行排队 或者更一般地说,如果我有提供微服务的GraphQL服务器“A”和“B”,那么我使用GraphQL服务器“C”来集成“A”和“B”。我是否应该使用apollo Client之类的“服务器端客户端”将“A”和“B”排在“C”中?我从未见过客户端GraphQL使用这种方式,但我想它会像往常一样工作

我目前正在使用“客户端GraphQL服务器”将RESTful端点包装到GraphQL端点

但如果服务器端也是GraphQL端点呢?如何以轻量级方式在GraphQL服务器中对另一个GraphQL服务器进行排队


或者更一般地说,如果我有提供微服务的GraphQL服务器“A”和“B”,那么我使用GraphQL服务器“C”来集成“A”和“B”。我是否应该使用apollo Client之类的“服务器端客户端”将“A”和“B”排在“C”中?

我从未见过客户端GraphQL使用这种方式,但我想它会像往常一样工作。您的查询有一个返回数据的解析器。在本例中,您将使用GraphQL请求而不是RESTAPI请求,但原理是相同的

请记住,GraphQL与任何其他api没有太大区别。将HTTP请求(使用GraphQL,所有请求都是POST)发送到URL端点(使用GraphQL,URL始终相同),并随请求发送参数数据(使用GraphQL,这是整个查询的位置)

我想您可以将变量从客户端GraphQL查询转换为服务器GraphQL查询中的变量,并以这种方式构造查询

使用cURL,可以使用如下格式进行查询:

$ curl -XPOST -H "Content-Type:application/graphql"  -d 'query RootQueryType { count }' http://localhost:3000/graphql
{
  "data": {
    "count": 0
  }
}
答案是这样的:

$ curl -XPOST -H "Content-Type:application/graphql"  -d 'query RootQueryType { count }' http://localhost:3000/graphql
{
  "data": {
    "count": 0
  }
}

只需使用您在客户端上使用的请求库来访问REST客户端,但修改它以匹配您试图访问的GraphQL服务器的API。

实际上,我认为解决函数与微服务交互的问题是一项工作。要了解更多信息,您现在应该看看

,我不知道有什么好方法可以做到这一点,但GitHub上有一些讨论:一个真正的用例:Neo4j现在可以从Neo4j GraphQL扩展导出GraphQL API,如果有PostgreSQL导出另一个GraphQL API,将它们组合到GraphQL的单个源中成为一个问题。我认为这将忽略内省的功能。如何从GraphQL网关组装GraphQL查询?