云原生架构 - 另一种 API 范式 GraphQL
基于场景常见的微服务的API范式:REST、GraphQL、Webhooks和gRPC。
在诸多选择中,REST可能是最广为人知的,因为它在Web API中应用十分广泛。REST对于相当大范畴的API来说是一个非常好的标准。
但在一些需要API设计风格更细致入微的场景,还有其他的标准可供选择。比如我们今天要聊的GraphQL, GraphQL的一个巨大好处,是在默认情况下,它通常只发送最小请求,而REST通常发送完整请求(即默认同时发送它拥有的所有内容)。正因为如此,GraphQL在一些特定的用例中更加适用,在这些场景中,需要更明确的数据类型定义,并且倾向于使用较小的数据包来进行传输。
GraphQL 范式的特点
GraphQL 范式优点
所见即所得
减少网络请求次数
代码即文档
参数类型强校验
缺点:缓存,复杂性
适用场景:面向移动端的服务请求
RESTful 范式的缺陷
扩展性,单个RESTful接口返回数据越来越臃肿
多次请求,占用网络资源,响应慢
二、初识 GraphQL
GraphQL 的实现能让客户端获取以结构化的方式,从服务端结构化定义的数据中只获取想要的部分的能力。
符合 GraphQL 规范的实现我称之为 GraphQL 引擎。
这里的服务端不仅指网络服务,用 GraphQL 作为中间层数据引擎提供本地数据的获取也是可行的,GraphQL 规范并没有对数据源和获取方式加以限制。
操作模型:GraphQL 规范中对数据的操作做了定义,有三种,query(查询)、mutation(变更)、subscription(订阅)。
二、GraphQL 体验:Github V4 API
Explorer - GitHub Docs