6

REST vs GraphQL vs gRPC三者API技术比较

 2 years ago
source link: https://www.jdon.com/61099
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

REST vs GraphQL vs gRPC三者API技术比较
3种最流行的API开发技术深度比较
REST、GraphQL 和 gRPC 是现代 Web 应用程序中最流行的 3 种 API 开发技术。然而,选择一个并不容易,因为它们都有独特的功能。
在本文中,我将比较和对比 REST、GraphQL 和 gRPC 的特性和用法,以帮助您确定最适合您项目的一种。

REST——最流行的技术
Representational State Transfer (REST) 是现代 Web 开发中最流行的 API 开发技术。它为数据传输提供了无状态架构。客户端请求包含完成请求所需的所有详细信息,并且服务器不会保留客户端的状态。

REST API 支持本机 HTTP 缓存标头并使用 HTTP 方法(POST、GET、PUT、PATCH 和 DELETE)来操作数据。任何人都可以轻松开始使用 REST,因为它简单且学习曲线浅。

此外,REST 易于扩展且可靠。因此,开发人员可以毫无疑问地为他们的应用程序选择它。甚至 Twitter、Paypal 和 Google 等公司也在其产品中使用 REST API。

REST 的好处

  • 您可以放心地使用标准 HTTP 方法实现 CRUD 操作。
  • REST 已经存在了很长时间,几乎每个开发人员都知道如何使用它。
  • 它支持缓存。
  • 它是可扩展的,并提供客户端和服务器之间的分离。
  • 您可以轻松地将其集成到多个应用程序中。

REST 的缺点

  • 它存在过度获取和获取不足的问题。
  • 它不能维持状态。
  • 它有很大的有效载荷大小。
  • 随着应用程序的扩展,端点的数量急剧增加。
  • 更新数据库模式或数据结构并不容易。

何时选择 REST
如果您没有任何特定要求,REST 是最佳选择。例如,如果您是开发新手,那么使用 REST 是完美的选择,因为它的学习曲线很浅。此外,它拥有庞大的生态系统,您可以轻松找到解决您面临的任何问题的方法。

此外,在处理大量请求和有限带宽时,您最好使用 REST。在这种情况下,您可以使用它的缓存支持来提高性能。
总的来说,我们不能将 REST 的使用限制在某些类型的应用程序中。例如,如果您的应用程序明确需要 GraphQL 或 gRPC,您可以使用 REST。

GraphQL - 客户端驱动的标准
GraphQL 是 2015 年推出的一种数据查询语言。它允许开发人员查明并获取他们需要的确切数据。与 REST 相比,GraphQL 是一种客户端驱动的方法,客户端可以决定需要哪些数据、如何获取数据和格式。它还解决了过度获取和获取不足的问题,因为客户端可以查明所需的数据。

GraphQL 使用查询、更改和订阅来操作数据。

  • 查询— 从服务器请求数据。
  • 突变更改——修改服务器端数据。
  • 订阅- 在数据更新时获取实时更新。

GitHub 是使用 GraphQL 的最大公司之一。它在 2016 年从 REST 切换到 GraphQL,它极大地帮助了 GitHub 的快速增长。
GraphQL 的好处

  • 它非常灵活,可以准确地满足客户的需求。
  • 它没有过度获取和获取不足。
  • 它受到著名语言的支持,包括 JavaScript、Java、Python、Ruby 和 PHP。
  • 它允许自定义数据的结构。
  • 单个查询可以包含来自多个资源的字段。

GraphQL 的缺点

  • 查询可能很复杂。
  • 它缺乏内置的缓存支持。
  • 与 REST 相比,学习 GraphQL 可能具有挑战性。
  • 默认不支持文件上传。

何时选择 GraphQL
GraphQL 是查询具有许多记录的数据库的绝佳选择。您可以使用 GraphQL 消除过度获取,只检索特定格式的必要数据以提高应用程序性能。此外,GraphQL 非常适合需要聚合来自多个资源的数据的情况。

当您不完全了解客户端如何使用 API 时,您也可以使用 GraphQL。使用 GraphQL,您无需预先定义严格的合约。相反,您可以根据客户反馈逐步构建 API。

gRPC — 一种面向性能的技术
gRPC 是谷歌在 2016 年推出的远程过程调用的演进版本。它是一种轻量级的解决方案,使用最少的资源提供最高的性能。

gRPC 遵循基于合约的通信方法。它要求客户端和服务器在开始通信之前都有合同。gRPC 使用 Protobuf(一种声明性语言)来创建合约,并使用选定的语言为客户端和服务器生成兼容的代码。

gRPC 支持的通信方式有 4 种:

  • 一元- 首先,客户端向服务器发出单个请求。然后,服务器发送一个响应。
  • Client-Streaming — 首先,客户端将一系列请求流式传输到服务器,然后是一条消息,通知流已结束。最后,服务器发送一个回复。
  • 服务器流式传输——首先,客户端向服务器发出单个请求。然后,服务器向客户端发送消息流。
  • 双向流——客户端和服务器都可以在建立初始连接后随时发送消息。

gRPC 的好处

  • 它是开源的。因此开发人员可以根据需要对其进行修改。
  • 它支持多种语言,包括 JavaScript、Java、C、C++、C#、Kotlin、Python、Go 和 PHP。
  • 它能够进行负载平衡。
  • 与 REST API 相比,它默认使用 HTTP2 来减少延迟。
  • 它以二进制格式序列化数据。
  • 它支持全双工流。

gRPC 的缺点

  • 默认情况下,它不附带浏览器支持。
  • 与 REST 和 GraphQL 相比,它没有坚定的社区支持。

何时选择 gRPC
gRPC 是资源较少的设备之间通信的绝佳选择。例如,物联网设备、智能设备和相机可以从使用 gRPC 中受益,因为它使用最少的资源优化了性能。

除此之外,gRPC 可以在微服务架构中用于处理服务之间的通信,因为它可以与用不同语言编写的服务进行通信。

结论
我在本文中讨论了 3 种最流行的 API 开发技术,它们的优点、缺点以及我们应该何时选择它们。我希望您现在对 REST、GraphQL 和 gRPC 有了更好的理解,可以为您的应用程序选择最好的一种。
但是,重要的是要注意,我们不能将一个放在另一个之上,然后说这比另一个优越。每个都有独特的功能,您应该根据您的项目要求选择一个。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK