了解 GraphQL 中的模式合成

阅读时长 4 分钟读完

GraphQL 是一种用于 API 的查询语言,它是由 Facebook 开发的。它可以让前端工程师更灵活地获取数据,而不必依赖于 RESTful API 去获取预定义的数据。在 GraphQL 中,服务端提供一个“schema”,用于定义 API 支持的查询类型和返回值类型。而客户端可以根据自己的实际需求去定义和查询所需的数据和类型。这种方式比传统的 RESTful API 更为灵活和高效。

在 GraphQL 领域中,模式合成(Schema Stitching)是一种十分重要的技术。

模式合成的概念

GraphQL 的服务端可以将多个 schemas 合并到一起,形成一个更加复杂的 schemas。这就是所谓的 schema stitching,也就是模式合成。比如我们有两个 schemas,一个是 users,另一个是 posts。它们分别定义了用户和文章两个类型。我们可以将它们通过 schema stitching 合并起来,形成一个新的 schema,让客户端可以一次性去查询两个类型。

模式合成可以帮助我们更好地管理 queries 和 mutations,并且可以节省查询的时间和流量,提高查询效率。

模式合成的实现

模式合成的实现可以基于不同的技术方案来完成。在 GraphQL 范畴内,有很多实现模式合成的工具和框架。以下是两种常见的方案:

GraphQL Tools

GraphQL Tools 是一个验证、合并和分解 GraphQL schemas 的 JavaScript 工具包。它可以将多个 schemas 合并到一起,方便客户端查询数据。

以下是一个使用 GraphQL Tools 的例子:

-- -------------------- ---- -------
----- - ---------- - - -------------------------
----- ---------- - ------------------------
----- ---------- - ------------------------

----- ----- - -
  -----------
  ----------
--

----- ----------- - ----------------- - ---- ---- ---

------ ------- ------------

我们将多个 schemas 的类型定义文件分别通过 required 引入,使用 mergeTypes 合并成一个 schema。客户端就可以查询所有的类型了。

Apollo Federation

Apollo Federation 是一个由 Apollo 提供的用于构建分布式 GraphQL 应用的解决方案。它可以将单个的 GraphQL 服务拆分成多个可独立进行部署和维护的子服务,从而更好地管理大型 GraphQL 应用。

以下是一个使用 Apollo Federation 的例子:

-- -------------------- ---- -------
------ - ------------ - ---- ----------------
------ - ------------- - ---- ------------------

----- ------- - --- ---------------
  ------------ -
    - ----- -------- ---- ----------------------- --
    - ----- -------- ---- ----------------------- -
  -
---

----- ------ - --- --------------
  -------
---

----------------

我们定义了两个子服务(users 和 posts),通过 ApolloGateway 进行统一的入口管理,并且将查询分发到对应的子服务中。这样,就可以更好地分离业务逻辑,方便维护和升级。

总结

GraphQL 中的模式合成,可以让前端工程师更加灵活地获取数据,提高查询效率,并且方便维护。我们可以通过 GraphQL Tools 或者 Apollo Federation 等工具和框架来实现模式合成。希望本文可以帮助读者更好地理解 GraphQL 的相关技术,加深对 GraphQL 技术的了解和掌握。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6457401f968c7c53b0a07f00

纠错
反馈