RPC 、REST、GraphQL三种API设计方式的简介和比较

clipboard.png

RPC

RPC=remote procedure call,执行远程服务器上的一个function,举例:
服务端定义了三个函数:后端

clipboard.png

客户端发起请求缓存

clipboard.png

RPC在一些大公司中依然被使用。
RPC的优势有:服务器

  • 设计简洁,便于理解
  • 轻量的payload
  • 很高的性能表现

缺点有:网络

  • 先后端代码高耦合
  • 代码可读性很差,相关代码不容易被定位
  • 会致使有大量被定义的函数,难以管理

REST

REST = Representational state transfer,直接翻译就是『表现层状态转移』
优势:函数

  • 先后端高度解耦
  • 便于理解,即便没有看文档,也能大概知道接口是用来作什么的;
  • 接口的功能有单一性,便于扩展和复用;
  • 利用了HTTP本来的特性

缺点:微服务

  • 有时payload会变的特别大
  • 同一个页面可能要调用不少个API,来获取不一样的东西,在网络差的状况下会下降体验

举例:性能

clipboard.png

GraphQL

GraphQL = Graph query language
吸收了RPC和REST的一些共同优势;以查询为基本单元,方便获取到想要的数据,举例:
接口定义
clipboard.png
接口调用
clipboard.png
优势:优化

  • 低网络速度下表现优异
  • 声明式地数据获取
  • 根据UI需求获取合适的数据,避免没必要要的数据传输

缺点:spa

  • 定义起来相对复杂
  • 缓存问题,须要一个更加健全的机制中来确保字段级别的缓存
  • 版本持续更新中,还不太成熟

综合对比与总结

API设计也不会有银弹。
设计API时,决定使用哪一种形式,得先考虑所设计的API将会被谁使用:翻译

  • 若是是关注于对象和资源的项目,须要对接各类不一样的端和使用者,须要便于使用和阅读文档,那么适合使用REST
  • 若是是面向行为动做,或者内部的一些微服务,对响应要求高,那么能够考虑RPC
  • 若是是须要给UI提供数据,或者须要对弱网络环境下优化而减小请求,那么能够考虑GraphQL

clipboard.png

参考来源

https://www.youtube.com/watch...

相关文章
相关标签/搜索