了解GraphQL
是Facebook内部应用多年的一套数据查询语言。
可以理解为没有值,只有属性的对象,返回的结果就是对应的属性及对应值的对象。
出现原因(解决问题)
前端来决定请求的数据格式,后端返回固定的数据模型。
GraphQL vs REST:
REST优点是简单明了,缺点是太简单明了,导致语法可扩充性不强。
- 语法灵活:只需要一次请求就能够获得你所有想要的资源;
- 没有冗余信息;
- 强类型;
- 自定义schema;
vs 其他专有方案:
- 专有方案每个接口都自定义获取数据,后端代码无法复用;
- 和REST对比的第二点一样;
- 每个接口的数据不能复用;
注意事项
- 使用GraphQL并不意味着能提高API效率;
- 旧有的缓存机制可能会失效。query时以POST方式提交,POST并非幂等,因此原有的缓存机制会失效。
介绍
GraphQL 是因为query是以图的形式来组织的。
使用Schema来描述数据,并通过制定和实现GraphQL规范定义了支持Schema查询的DSQL(Domain Specific Query Language,领域特定查询语言)。
GrahpQL由以下组件构成:
- 类型系统(Type System)
- 查询语言(Query Language)
- 执行语义(Execution Semantics)
- 静态验证(Static Validation)
- 类型检查(Type Interception)
GraphQL的一个查询请求被称为一份query文档(query document),即GraphQL服务能够解析验证并执行的一串请求字符串。query由操作(Operation)和片段(Fragments)组成。一个query可以包含多个操作和片段。
参考资料: