GraphQL Schema
时间:2019/4/28 12:31:48
参考:
模式 schema
#
类似于JSON。使用 schema
定义对象类型,查询方法,变更方法等。
1 2 3 4 5 6 7 8 |
|
类型系统 type
#
定义服务提供的查询数据。
标量类型#
类似编程语言的基本类型,在查询中 非标量类型
需要服务端查询以获取数据,标量类型
类似于对象的字段,不需要进一步查询。
默认标量类型#
Int
:32 位整型(有符号)。Float
:双精度浮点类型(有符号)。String
:UTF-8
类型的字符串。Boolean
:true
orfalse
。ID
:唯一标识符。
自定义标量类型#
需要实现类型的序列化、反序列化和数据验证。
1 |
|
枚举类型#
类型的值只能是定义中的一个。
1 2 3 4 5 |
|
列表和非空#
1 2 3 4 |
|
该定义表示:在服务端,name
字段总是非空的,如果为空,客户端查询会收到一个异常。 []
表示返回的结果是一个非空的数组。
列表及列表元素非空的情况:
[Object!]
: 列表可以为空,但列表不可以包含空对象。[Object]!
: 列表不可以为空,但列可以包含空对象。[Object!]!
: 列表不能为空,列表也不能包含空对象。
注:null
表示空,列表的大小为零并不表示列表为空。
接口#
接口是一种抽象类型,接口的实现需要包含接口的所有字段。在查询时如果两个对象实现了同一个接口,可以通过指定查询接口类型,服务端返回的结果会包含所有实现该接口的类型的数据。在查询端可以根据不同的类型取不同的字段。
接口定义:
1 2 3 4 5 6 |
|
接口实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
查询语句:
1 2 3 4 5 6 7 8 9 10 11 |
|
查询的时候,如果返回的类型是 Droid
就取 primaryFunction
字段,如果是 Human
,就取 totalCredits
字段。
联合类型#
类似于接口,返回的结果会包含指定的类型,但不要求每个类型都有相同的字段。
1 |
|
客户端查询语法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
输入类型#
输入类型常用于数据变更操作。
1 2 3 4 |
|
客户端语句:
1 2 3 4 5 6 |
|