GraphQL Schema Design:如何设计 Schema,以符合您的需求

阅读时长 4 分钟读完

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

纠错
反馈