1. what?
①. Schema是用于定义数据结构的.
a. 如:User对象中有哪些属性、对象与对象之间是什么关系等.
2. Schema定义结构:
// 定义查询
schema {
query: UserQuery
}
// 定义查询的类型
type UserQuery {
// 指定对象以及参数类型
user(id: ID) : User
}
// 定义对象
type User {
// !表示该属性是非空项
id: ID!
name: String
age: Int
}
3. 标量类型(Scalar Types):
①. GraphQL规范中,默认定义了5种类型:
a. Int: 有符号32位整数
b. Float: 有符号双精度浮点值
c. String: UTF-8字符序列
d. Boolean: true、false
e. ID: ID标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中的键
②. 自定义类型:
a. 在graphql-java实现中增加了: Long、Byte等.
4. 枚举类型:
①. 枚举类型是一种特殊的标量,它限制在一个特殊的可选值集合内.
②. 举例:
// 定义枚举
enum Episode {
NEWHOPE
EMPIRE
JEDI
}
type Human {
id: ID!
name: String!
// 使用枚举类型
appearsIn: [Episode]!
homePlanet: String
}
5. 接口(interface):
①. 一个接口是一个抽象类型,包含某些字段,而对象类型必须包含这些字段,才能算实现了这个接口.
②. 举例:
// 定义接口
interface Character {
id: ID!
name: String
}
// 实现接口
type Human implements Character {
id: ID!
name: String
total: Int // 扩冲
}