1. GraphQL的类型
GraphQL 的类型系统分为标量类型(Scalar Types,标量类型)和其他高级数据类型。
标量类型即可以表示最细粒度数据结构的数据类型,可以和 JavaScript 的原始类型对应。
1.1. GraphQL 规范目前规定支持的标量类型
1. Int -有符号 32 位整数;
2. Float-有符号双精度浮点值;
3. String-UTF‐8 字符序列;
4. Boolean-true 或者 false;
5. ID-ID 标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中的键;
1.2. GraphQL 其他高级数据类型
1. Object - 对象,用于描述层级或者树形数据结构,对于树形数据结构来说,叶子字段的类型都是标量数据类型,几乎所有 GraphQL 类型都是对象类型。Object 类型有一个 name 字段,以及一 个很重要的 fields 字段,fields 字段可以描述出一个完整的数据结构;
2. Interface-接口,用于描述多个类型的通用字;
3. Union-联合类型,用于描述某个字段能够支持的所有返回类型以及具体请求真正的返回类型;
4. Enum-枚举,用于表示可枚举数据结构的类型 ;
5. Input Object-输入对象;
6. List -列表,列表是其他类型的封装,通常用于对象字段的描述;
7. Non-Null-不能为 Null,Non-Null 强制类型的值不能为 null,并且在请求出错时一定会报错。可以用于必须保证值不能为 null 的字段,例如数据库的行的 id 字段不能为 null;
2. GraphQL的查询方式
GraphQL 规范支持两种操作:
1. query-仅获取数据(fetch)的只读请求;
2. mutation-获取数据后还有写操作的请求;
新版本的 GraphQL 还支持 subscription ,这是为了处理订阅更新这种比较复杂的实时数据更新场景而设计的操作。