GraphQL 是一个强大的工具,可帮助前端开发人员更有效地与后端数据交互。Schema 是 GraphQL 的核心,是定义如何查询、操作和获取数据的规范。如何设计 Schema 对于整个应用程序的成功非常重要。在本文中,我们将探讨如何有效地设计 GraphQL Schema,以满足您的需求。
Schema 设计原则
在设计 GraphQL Schema 时,有几个原则要遵循,以确保您的 Schema 能够满足您的需求。
1. 明确目标和需求
在你开始设计你的 GraphQL Schema 之前,你需要明确你的目标和需求,包括你的数据结构和数据的类型、查询和 mutations 的类型和参数,以及你的 Schema 的查询和 mutations。
2. 将 Schema 拆分为小的模块化单元
将 Schema 拆分为多个小的、模块化的单元可以使 Schema 更易于管理和修改。这也有助于减少数据泄露和合理使用 GraphQL Federation。
3. 避免嵌套对象
GraphQL 不容许嵌套对象,因此在您的 Schema 中保持扁平结构是非常重要的。这可以帮助减少复杂度,并确保您的 Schema 易于理解和操作。
4. 定义自定义 Scalar
GraphQL 默认提供了几种 Scalar 类型,如 String、Int、Boolean 等。但是,有时您需要定义自己的自定义 Scalar,以满足您的需求。比如日期时间, 如果你定义了一种时间格式的 scala,你并不需要将其转换为图形查询。
5. 定义扩展 API 的规范
在 GraphQL Schema 中定义扩展 API 的规范可以帮助您更好地管理应用程序。这样,您可以定义模块化的查询,以及接受包括 mutations 在内的多种参数。
Schema 设计示例
现在,让我们来看一个示例,展示如何设计一个简单的电商应用。
假设我们的电商应用有三种类型的对象:用户、产品和订单。
-- -------------------- ---- ------- ---- ---- - --- --- ----- ------- ------ ------- ------- --------- - ---- ------- - --- --- ----- ------- ------ ------ ------------ ------- - ---- ----- - --- --- ----- ------- ------- ------- ------ ------ --------- ----------- - ----- ------------ - ----- ------- ------ ------ ------------ ------- - ----- ---------- - --------- ------ ------- ------- - ---- ----- - ------ -------- -------- ----- ----- --------- ----------- ----------- ----- -------- ------- --------- --------- ----- ------ - ---- -------- - ---------------- -------- ------ --------- ----- -------------------- --------------- -------- ------------------- ---- ------ ------------- ------ --------------- ---- ------- --------- ------ --------------- ----- ------ -
以上 Schema 模型定义了三个类型(用户、产品和订单),每个类型都有与之关联的属性。同时定义了由 Query 和 Mutation 命名的两个操作,分别用于查询和修改这些类型的属性。我们还定义了两个 input 类型,用于 create 和 update 操作中的输入。
总结
GraphQL Schema 设计是从数据源中获得和转换数据的核心。通过使用上述的 Schema 设计原则和示例,您可以有效地设计 Schema,以满足您的应用程序的需求。在实际开发过程中,须遵循此原则及结合自身对应用的理解选择对此进行扩展 optimize。无论您是从头开始设计一个新的 Schema,还是需要对现有 Schema 进行改进,这些原则和示例都可以帮助您设计出更好的 GraphQL Schema。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f81c43f6b2d6eab303f341