GraphQL 中的数据类型使用详解

GraphQL 是一种用于 API 的查询语言,它的特别之处在于它只返回客户端请求的数据,而不是像 RESTful API 那样返回整个资源。GraphQL 还提供了强大的数据类型系统,以及许多其他功能,这些将在本文中详细介绍。

基本数据类型

GraphQL 提供了以下基本数据类型:

  1. Int:32 位有符号整数
  2. Float:双精度浮点数
  3. String:UTF‐8 字符序列
  4. Boolean:true 或 false
  5. ID:唯一标识符

这些基本数据类型可以在定义 GraphQL 模式时使用,例如:

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

在这个示例中,我们定义了一个 Post 类型,其中 idtitle 是字符串,views 是一个整数,isPublished 是一个布尔值,createdAt 是一个自定义日期类型。

自定义数据类型

除了基本类型,GraphQL 还允许定义自定义数据类型,例如枚举,输入类型和接口。

枚举类型

枚举类型是一种在 GraphQL 中定义一组固定值的数据类型。例如,我们可以定义一个 Status 枚举类型,其中包含 READYWAITING 两个值:

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

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

在这个示例中,我们定义了一个 Status 枚举类型,用于表示物品的状态。我们还将 status 字段的类型更改为 Status

输入类型

输入类型是一种用于从客户端传递参数的数据类型。例如,我们可以定义一个 ItemInput 输入类型,其中包含 namestatus 两个字段:

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

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

在这个示例中,我们定义了一个 ItemInput 输入类型,用于从客户端传递创建项目所需的参数。我们还定义了一个 createItem 变异,它接受 ItemInput 对象作为参数,并返回一个 Item 对象。

接口类型

接口类型是一种定义可共享字段的数据类型。例如,我们可以定义一个 Node 接口,所有实现此接口的类型都必须具有 id 字段:

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

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

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

在这个示例中,我们定义了一个 Node 接口,并将其实现为 PostComment 类型。这意味着,PostComment 中必须具有 id 字段。

空值和默认值

GraphQL 允许字段具有可选值,并将返回 null 或其默认值。例如,我们可以定义一个具有可选 views 字段的类型:

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

在这个示例中,views 字段是可选的,并将返回 null

我们还可以定义一个默认值,例如:

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

在这个示例中,如果客户端未提供 status 值,则将默认为 READY

结论

GraphQL 的数据类型系统提供了强大和灵活的方式来描述和指定数据模式和参数。通过使用 GraphQL 的数据类型系统,我们可以更容易地设计和构建强大和可扩展的 API。

参考资源

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671312edad1e889fe20a435a