随着移动设备和 Web 应用的普及,开发人员需要为多个不同的客户端、应用和平台提供数据。GraphQL 是一种用于构建 API 的查询语言,通过提供高度可组合和可拓展的查询工具,使得开发人员能够更好地满足不同客户端的需求。GraphQL 拆分模式是一种管理数据依赖关系的方法,可以帮助开发人员提高开发效率并减少解决特定需求时的工作量。
拆分模式(Schema Stitching)
GraphQL 拆分模式是一种将两个或多个 GraphQL schema 合并为一个的方法。这些 schema 可以来自一个或多个不同的服务,并且使用拆分模式可以在一次请求中组合它们。拆分模式可用于实现多个不同的客户端应用程序之间共享的数据服务,以及多个不同的 GraphQL 服务之间的数据共享。
拆分模式的基本原理是将各个 schema 中的类型进行重命名,以便在组合后的 schema 中唯一识别每个类型。由于类型名称的唯一性是 GraphQL schema 的本质要求,因此必须确保在组合多个 schema 时不会有重复类型,否则会导致 schema 无法正确解析查询。
拆分模式示例
以下示例演示如何使用拆分模式将两个 GraphQL 服务组合为一个服务,并在客户端应用程序中使用它们。
假设有两个 GraphQL 服务:一个服务提供有关博客文章的信息,另一个服务提供关于用户评论的信息。这两个 schema 可以使用拆分模式组合为一个大的 schema,如下所示:
-- -------------------- ---- ------- ------ ---- ---- - --------- ----------- - ---- ------- - --- --- -------- ------- ------- ----- - ------ ---- ---- - --------- ----------- -
在此示例中,extend
关键字用于扩展现有类型;新类型 Comment
现在与两个现有类型 Post
和 User
相关联。
多端需求实践
现实中,开发人员需要在多种客户端应用程序之间共享数据,这意味着数据必须在移动应用、Web 应用和其他类型的应用程序之间传递。使用拆分模式可以轻松地实现此类需求。以下是一些实际应用程序中使用拆分模式的示例。
共享身份验证
移动应用和 Web 应用程序通常使用不同的身份验证机制。但是,在大多数情况下,这两种应用程序可能需要访问同一用户的信息。使用拆分模式,可以轻松地将不同的身份验证机制组合在一起,并将客户端应用程序的请求路由到正确的服务。
-- -------------------- ---- ------- ------ ---- ----- - --- ---- - ---- ---- - --- --- ----- ------- ------ ------- - ------ ---- ---- - ------------------ ------- -
合并多个 GraphQL 服务
许多企业应用程序可能由多个微服务组成,每个微服务都使用自己的 GraphQL schema。使用拆分模式,可以将这些 schema 组合为一个大的逻辑 schema,并将其公开为单一的 GraphQL 端点,从而为客户端应用程序提供一个统一的数据访问接口。
-- -------------------- ---- ------- ---- ----- - ----------------- ---------------- ------------------- ------------------ - ---- ---------------- - --- --- ----- ------- ------------ ------------------- - ---- ------------------ - --- --- ----- ------- -
结论
GraphQL 拆分模式是一种灵活的方法,可以管理来自不同服务的数据并将其组合为一个单一且快速的查询端点。在多个客户端应用程序之间共享数据时,拆分模式为开发人员提供了非常强大的工具和语言。拆分模式可以简化数据管理和查询的处理,从而提高开发效率。
参考文献
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6720b0422e7021665e037747