我目前正在使用“客户端 GraphQL 服务器”将 RESTful 端点包装到 GraphQL 端点。
但是如果服务器端也是一个 GraphQL 端点呢?如何通过轻量级的方式在 GraphQL 服务器中排队另一个 GraphQL 服务器?
或者更一般地说,如果我有 GraphQL 服务器“A”和“B”,提供微服务,那么我使用 GraphQL 服务器“C”来集成“A”和“B”。我应该使用某种使用 apollo-client 的“服务器端客户端”来在“C”中排队“A”和“B”吗?
我目前正在使用“客户端 GraphQL 服务器”将 RESTful 端点包装到 GraphQL 端点。
但是如果服务器端也是一个 GraphQL 端点呢?如何通过轻量级的方式在 GraphQL 服务器中排队另一个 GraphQL 服务器?
或者更一般地说,如果我有 GraphQL 服务器“A”和“B”,提供微服务,那么我使用 GraphQL 服务器“C”来集成“A”和“B”。我应该使用某种使用 apollo-client 的“服务器端客户端”来在“C”中排队“A”和“B”吗?
我从未见过客户端 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。
实际上,我认为与您的微服务交互是解析函数的工作。有关更多信息,您应该查看GraphQL 和微服务架构