vlambda博客
学习文章列表

云原生架构 - 另一种 API 范式 GraphQL


基于场景常见的微服务的API范式:REST、GraphQL、Webhooks和gRPC。


在诸多选择中,REST可能是最广为人知的,因为它在Web API中应用十分广泛。REST对于相当大范畴的API来说是一个非常好的标准。


但在一些需要API设计风格更细致入微的场景,还有其他的标准可供选择。比如我们今天要聊的GraphQL, GraphQL的一个巨大好处,是在默认情况下,它通常只发送最小请求,而REST通常发送完整请求(即默认同时发送它拥有的所有内容)。正因为如此,GraphQL在一些特定的用例中更加适用,在这些场景中,需要更明确的数据类型定义,并且倾向于使用较小的数据包来进行传输。


  1. GraphQL 范式的特点


GraphQL 范式优点

  • 所见即所得

  • 减少网络请求次数

  • 代码即文档

  • 参数类型强校验

缺点:缓存,复杂性

适用场景:面向移动端的服务请求

RESTful 范式的缺陷

  • 扩展性,单个RESTful接口返回数据越来越臃肿

  • 多次请求,占用网络资源,响应慢


二、初识 GraphQL


GraphQL 的实现能让客户端获取以结构化的方式,从服务端结构化定义的数据中只获取想要的部分的能力。


符合 GraphQL 规范的实现我称之为 GraphQL 引擎。


这里的服务端不仅指网络服务,用 GraphQL 作为中间层数据引擎提供本地数据的获取也是可行的,GraphQL 规范并没有对数据源和获取方式加以限制。


操作模型:GraphQL 规范中对数据的操作做了定义,有三种,query(查询)、mutation(变更)、subscription(订阅)。


云原生架构 - 另一种 API 范式 GraphQL


二、GraphQL 体验:Github V4 API

云原生架构 - 另一种 API 范式 GraphQL


Explorer - GitHub Docs

           云原生架构 - 另一种 API 范式 GraphQL