GraphQL Schema 中的 4 种数据类型详解

阅读时长 3 分钟读完

GraphQL 是一种用于 API 的查询语言,它通过一种类似于 JSON 的格式来描述数据,可以有效地解耦前后端代码,提高开发效率。在 GraphQL 中,定义 Schema 是非常重要的一步,它描述了客户端可以查询和修改的所有数据。

GraphQL Schema 中包含了 4 种数据类型:Scalar、Object、Enum 以及 Interface,本文将详细介绍这四种类型并提供示例代码。

1. Scalar(标量类型)

Scalar 是 GraphQL 中的基本数据类型,它们代表着一个具体的数值或字符串等。GraphQL 中内置了 5 种 Scalar 类型:

  • Int:表示整数类型。
  • Float:表示浮点数类型。
  • String:表示字符串类型。
  • Boolean:表示布尔类型。
  • ID:表示唯一标识符类型,序列化为字符串。

因为 Scalar 类型是基本数据类型,因此它们不能再被嵌套为其他类型。在 Schema 中定义 Scalar 类型非常简单:

这里定义了一个名为 Date 的 Scalar 类型。具体的转换逻辑需要在 Resolver 中实现。

2. Object(对象类型)

Object 类型用于描述一类具有共同属性的数据,它们通常包含多个 Scalar 类型和 Object 类型的属性。在 Schema 中定义 Object 非常简单:

这里定义了一个名为 User 的 Object 类型,它包含了 id、name、age 和 friends 四个属性。其中,id 和 name 是必须的属性,因此在类型定义的属性后面加上了感叹号(!),表示它们是必须的属性。

3. Enum(枚举类型)

Enum 类型用于描述一组固定值,常常用于描述一些状态或类型等。在 Schema 中定义 Enum 类型非常简单:

这里定义了一个名为 Gender 的 Enum 类型,它包含了 MALE、FEMALE 和 UNKNOWN 三个枚举值。

4. Interface(接口类型)

Interface 类型用于描述一组具有相同特征的数据类型,并且可以充当其他 Object 类型的父类型。在 Schema 中定义 Interface 类型非常简单:

这里定义了一个名为 Node 的 Interface 类型,它包含了 id、created 和 updated 三个属性。其他 Object 类型可以实现这个接口类型:

在这里,User 类型实现了 Node 接口类型,因此它必须包含 id、created 和 updated 三个属性。

总结

以上是 GraphQL Schema 中的 4 种数据类型,它们分别是 Scalar、Object、Enum 和 Interface。通过对这四种类型的详细介绍,我们可以更好地理解 GraphQL Schema 的定义和使用方式。在实际开发中,根据具体的业务需求,选择不同的数据类型来完成 Schema 的定义,可以有效提高开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a5621548841e98941ed1d8

纠错
反馈

纠错反馈