GraphQL教程

GraphQL 类型系统

GraphQL 是一种强类型语言。类型系统定义了可以在 GraphQL 应用程序中使用的各种数据类型。类型系统有助于定义模式,这是客户端和服务器之间的契约。常用的GraphQL数据类型如下-
Sr.No. 类型和描述
1
Scalar
存储单个值
2
Object
显示可以获取什么样的对象
3
Query
其他特定类型的入口点类型
4
Mutation
数据操作入口
5
Enum
在需要用户从规定的选项列表中进行选择的情况下很有用

标量类型

标量类型是只能存储单个值的原始数据类型。 GraphQL 提供的默认标量类型是-
Int-有符号的 32 位整数 Float-带符号的双精度浮点值 String-UTF-8 个字符的序列 boolean-true或false ID-唯一标识符,通常用作获取对象的唯一标识符或用作缓存的键。
定义标量类型的语法如下-
field: data_type
下面给出的代码段定义了一个字段返回字符串值的命名问候语。
greeting: String

对象类型

对象类型是模式中最常用的类型,表示一组字段。对象类型中的每个字段都映射到另一种类型,从而允许嵌套类型。换句话说,一个对象类型由多个标量类型或对象类型组成。
定义对象类型的语法如下-
type object_type_name
{
   field1: data_type
   field2:data_type 
   ....
   fieldn:data_type
}
您可以考虑以下代码片段-
--Define an object type--
type Student {
   stud_id:ID
   firstname: String
   age: Int
   score:float
}
--Defining a GraphQL schema-- 
type Query
{
   stud_details:[Student]
}
上面给出的示例定义了一个对象数据类型 Student。根查询模式中的 stud_details 字段将返回 Student 对象的列表。

查询类型

GraphQL 查询用于获取数据。这就像在基于 REST 的 API 中请求资源一样。为简单起见,Query 类型是从客户端应用程序发送到 GraphQL 服务器的请求。 GraphQL 使用 架构定义语言 (SDL) 来定义查询。查询类型是 GraphQL 中众多根级类型之一。
定义查询的语法如下-
type Query {
   field1: data_type
   field2:data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}
定义查询的示例-
type Query  {
   greeting: String
}

突变类型

变异是发送到服务器以 创建、更新删除数据的操作。这些类似于用于调用基于 REST 的 API 的 PUT、POST、PATCH 和 DELETE 动词。
Mutation 是 GraphQL 中的根级数据类型之一。 Query 类型定义数据获取操作的入口点,而 Mutation 类型指定数据操作操作的入口点。
定义 Mutation 类型的语法如下-
type Mutation {
   field1: data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type 
}
例如,我们可以定义一个突变类型来添加一个新的学生,如下所示-
type Mutation {
   addStudent(firstName: String, lastName: String): Student
}

枚举类型

枚举类似于标量类型。在字段值必须来自规定的选项列表的情况下,枚举很有用。
定义枚举类型的语法是-
type enum_name{
   value1
   value2
}
以下代码段说明了如何定义枚举类型-
type Days_of_Week{
   SUNDAY
   MONDAY
   TUESDAY
   WEDNESDAY
   THURSDAY
   FRIDAY
   SATURDAY
}

列表类型

列表可用于表示特定类型的值的数组。列表使用类型修饰符 [] 定义,该修饰符包含对象类型、标量和枚举。
以下语法可用于定义列表类型-
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
}
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4