2

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

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

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

4

2 回答 2

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。

于 2017-06-01T19:57:53.707 回答
0

实际上,我认为与您的微服务交互是解析函数的工作。有关更多信息,您应该查看GraphQL 和微服务架构

于 2017-07-19T13:38:44.000 回答