GraphQL 是一种用于 API 的查询语言,它的特别之处在于它只返回客户端请求的数据,而不是像 RESTful API 那样返回整个资源。GraphQL 还提供了强大的数据类型系统,以及许多其他功能,这些将在本文中详细介绍。
基本数据类型
GraphQL 提供了以下基本数据类型:
- Int:32 位有符号整数
- Float:双精度浮点数
- String:UTF‐8 字符序列
- Boolean:true 或 false
- ID:唯一标识符
这些基本数据类型可以在定义 GraphQL 模式时使用,例如:
---- ---- - --- --- ------ ------- ------ ---- ------------ -------- ---------- ----- -
在这个示例中,我们定义了一个 Post
类型,其中 id
和 title
是字符串,views
是一个整数,isPublished
是一个布尔值,createdAt
是一个自定义日期类型。
自定义数据类型
除了基本类型,GraphQL 还允许定义自定义数据类型,例如枚举,输入类型和接口。
枚举类型
枚举类型是一种在 GraphQL 中定义一组固定值的数据类型。例如,我们可以定义一个 Status
枚举类型,其中包含 READY
和 WAITING
两个值:
---- ------ - ----- ------- - ---- ---- - --- --- ----- ------- ------- ------- -
在这个示例中,我们定义了一个 Status
枚举类型,用于表示物品的状态。我们还将 status
字段的类型更改为 Status
。
输入类型
输入类型是一种用于从客户端传递参数的数据类型。例如,我们可以定义一个 ItemInput
输入类型,其中包含 name
和 status
两个字段:
----- --------- - ----- ------- ------- ------- - ---- -------- - ----------------- ------------ ----- -
在这个示例中,我们定义了一个 ItemInput
输入类型,用于从客户端传递创建项目所需的参数。我们还定义了一个 createItem
变异,它接受 ItemInput
对象作为参数,并返回一个 Item
对象。
接口类型
接口类型是一种定义可共享字段的数据类型。例如,我们可以定义一个 Node
接口,所有实现此接口的类型都必须具有 id
字段:
--------- ---- - --- --- - ---- ---- ---------- ---- - --- --- ------ ------- ------ ---- ------------ -------- ---------- ----- - ---- ------- ---------- ---- - --- --- -------- ------- ------- ----- ---------- ----- -
在这个示例中,我们定义了一个 Node
接口,并将其实现为 Post
和 Comment
类型。这意味着,Post
和 Comment
中必须具有 id
字段。
空值和默认值
GraphQL 允许字段具有可选值,并将返回 null
或其默认值。例如,我们可以定义一个具有可选 views
字段的类型:
---- ---- - --- --- ------ ------- ------ --- ------------ -------- ---------- ----- -
在这个示例中,views
字段是可选的,并将返回 null
。
我们还可以定义一个默认值,例如:
----- --------- - ----- ------- ------- ------ - ----- -
在这个示例中,如果客户端未提供 status
值,则将默认为 READY
。
结论
GraphQL 的数据类型系统提供了强大和灵活的方式来描述和指定数据模式和参数。通过使用 GraphQL 的数据类型系统,我们可以更容易地设计和构建强大和可扩展的 API。
参考资源
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671312edad1e889fe20a435a