GraphQL
- GraphQL 是一种协议和一种 API 查询语言(实现数据查询的 runtime), 通常基于 http 协议
- GraphQL 是客户端和服务器之间通信的规范。
优点
1.提高开发速度
- 可以减少发出请求
- 单个调用来获取所需数据
- 减少延迟, 还能降低服务器的压力
- GraphQL 具有自文档的特点
2.提升开发者体验
- 更少的时间思考如何获取数据
- 在使用 Apollo 时,只需要在 UI 中声明数据
- 数据和 UI 放在一起,阅读代码和编写代码都变得更方便了
- GraphQL 之于数据, 就如 React 之于 UI
3.将复杂的 API 进行简化和标准化
- 可以按照需求自由组合和嵌套对象
- 对于每个对象都能够获得所需的数据,不多也不少
4.提升安全性
- 需要进行 schema 验证,而且是强类型的,因为这是它规范的一部分。
- 它可以频繁更新,而不会因为引入了新类型造成重大变更。
设计原则
- 分层(查询字段层次分明。字段嵌套在其他字段当中,查询字段的结构与其返回的数据结构相似)
- 以产品为中心(客户端所需的数据,以及客户端支持的语言和 runtime)
- 强类型(每个数据点在模版当中都有其特定的类型,并且均会进行验证)
- 客户端指定查询(服务器提供功能供客户端使用)
- 类型自查(能够查询 GraphQL 服务器的类型检测系统)
REST 缺点
术语
- SEQL(Structured English Query Language) - 结构化英文查询语言
- SQL(Structured Query Language) - 结构化查询语言
- SDL(Schema Definition Language) - 模版定义语言
- scalar type - 标量类型(String, Int, Boolean, ID, Float)
- ID(Identity Document)