教程 > graphql 教程 > 阅读:377

graphql 类型系统——迹忆客-ag捕鱼王app官网

graphql 是一种强类型语言。类型系统定义了可以在 graphql 应用程序中使用的各种数据类型。类型系统有助于定义模式,这是客户端和服务器之间的契约。常用的 graphql 数据类型如下

序号 类型 描述
1 scalar 存储单个值
2 object 显示可以获取什么样的对象
3 query 其他特定类型的入口点类型
4 mutation 数据操作的入口点
5 enum 在需要用户从规定的选项列表中进行选择的情况下很有用

scalar 类型

scalar 类型(以下称为 标量类型)是只能存储单个值的原始数据类型。graphql 提供的默认标量类型是

  • int - 有符号 32 位整数
  • float - 有符号双精度浮点值
  • 字符串- utf - 8 个字符的序列
  • 布尔值- 真或假
  • id - 唯一标识符,通常用作获取对象的唯一标识符或用作缓存的键。

定义标量类型的语法如下

field: data_type

下面给出的代码段定义了一个名为 greeting 的字段,它返回字符串值。

greeting: string

object 类型

object 类型(以下称为 对象类型)是模式中最常用的类型,表示一组字段。对象类型中的每个字段都映射到另一种类型,从而允许嵌套类型。换句话说,一个对象类型由多个标量类型或对象类型组成。

定义对象类型的语法如下 -

type object_type_name
{
   field1: data_type
   field2:data_type 
   ....
   fieldn:data_type
}

我们可以看以下代码片段 -

-- 定义一个对象类型 --
type student {
   stud_id:id
   firstname: string
   age: int
   score:float
}
--定义一个 graphql schema 组件--  
type query
{
   stud_details:[student]
}

上面给出的示例定义了一个对象数据类型 student。根查询模式中的stud_details字段将返回一个student 对象列表。


query 类型

graphql query 用于获取数据。这就像在基于 rest 的 api 中请求资源一样。为简单起见,query 类型是从客户端应用程序发送到 graphql 服务器的请求。graphql 使用架构定义语言 (sdl)来定义查询。query 类型是 graphql 中众多根级类型之一。

定义 query 的语法如下

type query {
   field1: data_type
   field2:data_type
   field2(param1:data_type,param2:data_type,...paramn:data_type):data_type
}

示例

type query  {
   greeting: string
}

mutation 类型

mutation 是发送到服务器以 创建更新删除 数据的操作。这些类似于用于调用基于 rest 的 api 的 putpostpatchdelete 动词。

mutation 是 graphql 中的根级数据类型之一。query 类型定义数据获取操作的入口点,而 mutation 类型指定数据操作操作的入口点。

定义 mutation 类型的语法如下

type mutation {
   field1: data_type
   field2(param1:data_type,param2:data_type,...paramn:data_type):data_type 
}

例如,我们可以定义一个 mutation 类型来添加一个新的学生,如下所示 -

type mutation {
   addstudent(firstname: string, lastname: string): student
}

enum 类型

enum 类型(以下称为 枚举类型)似于标量类型。在字段的值必须来自规定的选项列表的情况下,枚举很有用。

定义枚举类型的语法是

type enum_name{
   value1
   value2
}

以下片段说明了如何定义枚举类型

type days_of_week{
   sunday
   monday
   tuesday
   wednesday
   thursday
   friday
   saturday
}

list 类型

list 类型(以下称为 列表)可用于表示特定类型的值数组。列表使用类型修饰符 [] 定义,该修饰符包含对象类型、标量和枚举。

以下语法可用于定义列表类型

field:[data_type]

下面的例子定义了一个列表类型 todos

type query {
   todos: [string]
}

非空类型

默认情况下,每个核心标量类型都可以设置为 null。换句话说,这些类型可以返回指定类型的值,也可以没有值。要覆盖此默认值并指定必须定义的字段,可以将感叹号 ! 附加到类型后面。这确保了查询返回的结果中存在值。

以下语法可用于定义不可为空的字段

field:data_type!

在下面的示例中,stud_id被声明为必填字段。

type student {
   stud_id:id!
   firstname:string
   lastname:string
   fullname:string
   college:college
}

查看笔记

扫码一下
查看教程更方便
网站地图