如何注册网站域名备案,搜索引擎营销的方法,做茶评的网站,注册建筑劳务公司需要什么条件目录 一、介绍GraphQL二、GraphQL基本使用方法三、Schema 定义语言 (SDL)3.1 类型定义1#xff09;对象类型2#xff09;标量类型3#xff09;枚举类型4#xff09;输入类型5#xff09;列表类型6#xff09;非空类型7#xff09;接口类型8#xff09;联合类型 3.2 查询… 目录 一、介绍GraphQL二、GraphQL基本使用方法三、Schema 定义语言 (SDL)3.1 类型定义1对象类型2标量类型3枚举类型4输入类型5列表类型6非空类型7接口类型8联合类型 3.2 查询和变更 四、示例4.1 schema定义示例4.2 查询示例 一、介绍GraphQL
GraphQL 是一种用于 API 的查询语言以及一个用于执行查询的服务器端运行时。它由 Facebook 开发并在 2015 年开源。GraphQL 的主要目的是提供一种更高效、灵活的数据查询方式替代传统的 REST API。
基本功能
基本功能描述类型系统使用强类型系统定义 API 的数据结构。查询客户端可以通过查询请求精确地获取所需的数据减少数据传输量。变更Mutation支持变更操作用于创建、更新或删除数据。订阅Subscription支持订阅功能允许客户端订阅数据的变化并在数据发生变化时接收实时更新。解析器Resolver服务器端的函数用于处理查询和变更请求。每个字段都有一个解析器来获取相应的数据。
使用场景
使用场景描述复杂数据需求当客户端需要从多个资源中获取数据时通过单个请求获取所有所需数据。前端开发前端开发人员可以精确地查询所需数据减少不必要的数据传输。微服务架构作为聚合层统一多个微服务的数据接口简化客户端的调用逻辑。实时应用通过订阅功能适合需要实时数据更新的应用如聊天应用、股票行情等。
使用者
使用者描述FacebookGraphQL 的发明者广泛使用 GraphQL。GitHub提供基于 GraphQL 的 API允许开发者查询和操作 GitHub 数据。Shopify使用 GraphQL 提供其 API帮助开发者构建电商应用。Twitter使用 GraphQL 优化其数据查询和传输。Pinterest通过 GraphQL 提供其 API简化数据获取过程。
GraphQL 通过其灵活性和高效性已经成为现代 Web 开发中不可或缺的一部分广泛应用于各种复杂数据需求的场景。
二、GraphQL基本使用方法
GraphQL 是一种用于 API 的查询语言和一个用于执行查询的服务器端运行时GraphQL 的基本使用方法如下
定义 SchemaSchema 定义了 API 中的数据类型及其关系。编写查询客户端编写查询请求特定的数据。执行查询服务器执行查询并返回请求的数据。
三、Schema 定义语言 (SDL) 注 详细语法说明参见https://graphql.cn/learn/ GraphQL 的 Schema 定义语言 (SDL) 用于描述 API 的数据结构和操作。以下是一些常见的语法和示例
3.1 类型定义
在 GraphQL 的 Schema 定义中支持多种字段类型。以下是一些常见的字段类型及其说明。
1对象类型
对象类型用于定义复杂的数据结构可以包含多个字段每个字段可以是任意类型包括标量类型和其他对象类型。
type Person {id: ID!name: String!age: Intfriends: [Person]
}2标量类型 Int整数类型表示有符号 32 位整数。 type Example {age: Int
}Float浮点数类型表示有符号双精度浮点数。 type Example {price: Float
}String字符串类型表示 UTF-8 字符序列。 type Example {name: String
}Boolean布尔类型表示 true 或 false。 type Example {isActive: Boolean
}ID唯一标识符类型通常用作对象的唯一标识。 type Example {id: ID
}3枚举类型
枚举类型用于定义一组可能的值。
enum Role {ADMINUSERGUEST
}4输入类型
输入类型用于变更操作的输入参数。
input PersonInput {name: String!age: Int
}5列表类型
列表类型表示一组相同类型的值。
type Example {tags: [String]
}6非空类型
非空类型表示字段不能为空在类型后面加 ! 表示。
type Example {name: String!
}7接口类型
接口类型定义一组必须实现的字段。
interface Character {id: ID!name: String!
}8联合类型
联合类型表示多个可能的类型。
union SearchResult Person | Post这些字段类型可以组合使用以定义复杂的数据结构和操作。
3.2 查询和变更 查询类型定义读取数据的入口点。 type Query {person(id: ID!): Personpeople: [Person]
}变更类型定义写入数据的入口点。 type Mutation {addPerson(input: PersonInput!): Person
}四、示例
4.1 schema定义示例
以下是一个完整的 Schema 示例
type Query {person(id: ID!): Personpeople: [Person]
}type Mutation {addPerson(input: PersonInput!): Person
}type Person {id: ID!name: String!age: Int
}enum Role {ADMINUSERGUEST
}input PersonInput {name: String!age: Int
}
这个示例定义了一个 Person 类型一个 Role 枚举一个 PersonInput 输入类型以及查询和变更类型。
4.2 查询示例 查询单个 Person {person(id: 1) {idnameage}
}结果示例 {data: {person: {id: 1,name: John Doe,age: 30}}
}查询所有 People {people {idnameage}
}结果示例 {data: {people: [{id: 1,name: John Doe,age: 30},{id: 2,name: Jane Smith,age: 25}]}
}添加一个新的 Person mutation {addPerson(input: { name: Alice, age: 28 }) {idnameage}
}结果示例 {data: {addPerson: {id: 3,name: Alice,age: 28}}
}