API设计中REST、GraphQL和gRPC的选择依据? - levelup



  • REST:客户都如果主要以(或唯一)Web 浏览器应该使用 REST。
  • GraphQL:以数据为中心的客户端,即大多数客户端专注于显示数据关系的客户端,应该使用 GraphQL。GraphQL 肯定有竞争对手,目前它是以数据为中心的客户的事实上的选择。大量的支持,很多人都知道,很多集成选项……它实际上是这个类别的黄金标准。
  • RPC:以 API 为中心的服务,即调用函数和修改状态的服务,以及更有可能异步或通过非浏览器客户端(例如移动应用程序、其他后端服务)进行通信的服务,应考虑使用 RPC 选项,例如 gRPC 或 JSON- RPC。如果需要结构schema 预先定义,请查看 gRPC 及其直接替代方案。如果无需结构schema 定义,可选择 JSON-RPC 及其直接替代方案。
  • 如果您专门在 Kubernetes 中运行多个服务,强烈建议您考虑 gRPC。它是 CNCF 的一部分,许多 Kubernetes 工具和框架都对 gRPC 提供了开箱即用的支持。看起来 gRPC 将成为更复杂的 Kubernetes 部署的服务间通信的事实上的手段。