graphql 学习
大约 2 分钟
前言
记录 graphql 的学习笔记.
简介
Schema 包含的类型
Scalar types
提示
- 下面的数据类型类似于我们平常使用的编程语言中的原始类型。
- 需要定义非空类型时, 需要添加
!
, 例如:Int!
Int
:有符号 32 位整数。Float
:有符号双精度浮点值。String
:UTF‐8 字符序列。Boolean
: true 或者 false 。ID
:ID 标量类型表示一个唯一标识符, 通常用以重新获取对象或者作为缓存中的键。ID 类型使用和 String 一样的方式序列化;然而将其定义为 ID 意味着并不需要人类可读型。
Object types
提示
一个对象类型包含一组字段, 每个字段可以是标量类型或另一种对象类型。
type Book { title: String author: Author } type Author { name: String books: [Book] }
The Query type
提示
- 定义客户端可以针对您的数据图执行哪些 GraphQL 读取操作。
- Query 类型的每个字段定义了不同支持查询的名称和返回类型。
type Query { getBooks: [Book] # => 当前 API 为 /api/books getAuthors: [Author] # => 当前 API 为 /api/authors }
提示
执行查询一
qurty { getBooks { title } getAuthors { name } }
=> 返回
{ "data": { "getBooks": [ { "title": "" // ...... } ], "getAuthors": [ { "nmae": "" // ...... } ] // ...... } }
提示
执行查询二
qurty { getBooks { title author { name } } }
=> 返回
{ "data": { "getBooks": [ { "title": "", "author": { "name": "" } // ...... } ] // ...... } }
The Mutation type
提示
- 定义支持的写操作。
- Mutation 类型的每个字段定义了不同突变的签名和返回类型。
type Mutation { addBook(title: String, author: String): Book }
提示
执行添加
mutation { addBook(title: "", author: "") { title author { name } } }
=> 返回
{ "data": { "addBook": [ { "title": "", "author": { "name": "" } // ...... } ] // ...... } }
Input type
提示
- 允许您将对象作为参数传递给的特殊对象类型进行查询和突变。
- 帮助保持操作签名清洁。
type Mutation { createPost(title: String, body: String, mediaUrls: [String]): Post }
提示
输入类型
type Mutation { createPost(post: PostAndMediaInput): Post } input PostAndMediaInput { title: String body: String mediaUrls: [String] }