如何级联GraphQL?

时间:2016-10-12 18:12:15

标签: graphql apollostack

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

但是如果服务器端也是GraphQL端点怎么办?如何通过轻量级方式在GraphQL服务器中排队另一个GraphQL服务器?

或者更一般地说,如果我有GraphQL服务器“A”和“B”,提供微服务,那么我使用GraphQL服务器“C”来集成“A”和“B”。我应该使用某种“服务器端客户端”使用apollo-client左右在“C”中排队“A”和“B”吗?

2 个答案:

答案 0 :(得分:1)

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

请记住,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
  }
}

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

答案 1 :(得分:0)

实际上,我认为解决与微服务交互的功能是一项工作。有关详细信息,请查看GraphQL and Microservice Architecture