API 的三种类型:REST、GraphQL 和异步 API 的优缺点分析
导读:在这份学习指南中,我们将和大家一起了解 REST、GraphQL 和异步 API 的优缺点,以及这三种技术在现实生活中的理想用例。
API 在现代软件开发领域在发挥着举足轻重的作用。
目前,有三种主流类型的API,可用于在各个系统之间建立通信与数据交换。最前沿最流行是 REST 方法,这种方法因其简单和可扩展性,已经在行业中占据主导地位。
伴随着技术的发展,开发者与企业的需求也发生着变化。近年来,由Facebook开源的 GraphQL 和异步事件驱动 API 等替代方案也开始出现。与传统的 REST API 相比,它们具有更明显的优势。
在本文中,我们将详细研究每种 API 技术,并将它们做比较和展开理解,希望对感兴趣的小伙伴有些许帮助。
REST:面向资源的通信的开始
REST 架构围绕实体资源的概念展开。这些实体可通过标准 HTTP 方法进行管理,
例如 GET、POST、PUT 和 DELETE。
图 1 HTTP方法
REST 的关键特征之一就是无状态,其中来自客户端的每个请求都包含服务器完成该请求所需的所有信息。
这种方法可以将客户端和服务器解耦,彼此可以独立扩展。
REST 的优点与缺点
很明显,REST API 具有如下的一些优势:
REST 遵循基于标准 HTTP 方法的简单直观的设计。
REST 方法中的每个请求都是独立的,从而具有更好的可扩展性和可靠性。
REST 利用 HTTP缓存机制来增强性能并减少源服务器上的负载。
REST 具有互操作性,由于其标准格式,可以与各种编程语言和平台很好地配合。
当然,REST架构也存在一些缺点:
REST API 可能会导致过度获取,即客户端收到超出自己所需要的数据,从而导致效率低下与带宽浪费。
与第一点类似,REST API 也可能获取不足的问题,即需要增加多个请求来满足复杂的数据要求,这样会导致延迟增加。
REST 采用同步方法,在高负载场景中可能会导致阻塞与性能问题。
API数据模式的更改会影响客户端也要同步,导致紧耦合。
REST API 的用例
REST API 在如下用例中适合,以下我们举例说明:
缓存密集型应用程序– 读取密集型应用程序(例如新闻网站或静态内容)可以从 REST 的缓存机制中受益。REST 的标准化缓存指令使其更容易实现。
简单的 CRUD 操作– 在处理简单的 CRUD 操作时,REST API 提供简单性和可预测性。具有清晰静态数据模型的应用程序通常会发现 REST API 更合适。
GraphQL:进行声明式数据获取API的兴起
GraphQL 是用于查询数据的开源语言以及用于完成这些查询的运行时的组合。
GraphQL 背后的关键原则是采用分层结构来定义数据查询,让客户端在单个请求中精确指定所需的数据。
REST API 在如下用例中适合,以下我们举例说明:
缓存密集型应用程序– 读取密集型应用程序(例如新闻网站或静态内容)可以从 REST 的缓存机制中受益。REST 的标准化缓存指令使其更容易实现。
简单的 CRUD 操作– 在处理简单的 CRUD 操作时,REST API 提供简单性和可预测性。具有清晰静态数据模型的应用程序通常会发现 REST API 更合适。
GraphQL:进行声明式数据获取API的兴起
GraphQL 是用于查询数据的开源语言以及用于完成这些查询的运行时的组合。
GraphQL 背后的关键原则是采用分层结构来定义数据查询,让客户端在单个请求中精确指定所需的数据。
缓存密集型应用程序– 读取密集型应用程序(例如新闻网站或静态内容)可以从 REST 的缓存机制中受益。REST 的标准化缓存指令使其更容易实现。
简单的 CRUD 操作– 在处理简单的 CRUD 操作时,REST API 提供简单性和可预测性。具有清晰静态数据模型的应用程序通常会发现 REST API 更合适。