6 种 API 架构及其工作原理
API 通过清晰的协议和架构连接应用程序。 API 架构是用于创建软件接口的规则框架。 这些规则决定了如何向用户提供服务器功能。 架构类型决定了管理 API 的规则和结构。有许多不同类型的 API 架构,从 REST 到 RPC。 了解它们的结构和组成将为您的应用选择提供帮助。

API 通过清晰的协议和架构连接应用程序。 API 架构是用于创建软件接口的规则框架。 这些规则决定了如何向用户提供服务器功能。 架构类型决定了管理 API 的规则和结构。有许多不同类型的 API 架构,从 REST 到 RPC。 了解它们的结构和组成将为您的应用选择提供帮助。
REST
REST API 是现代的,是开发人员使用的最流行的 API 架构。 REST(表述性状态转移)是一种用于设计客户端-服务器应用程序的体系结构。 它不是协议或标准,因此您可以通过多种方式实施它。 这方面增加了您作为开发人员的灵活性。

REST 允许访问存储在数据库中的请求数据。 您可以使用 REST API 执行核心 CRUD 功能。 当客户端通过 REST API 请求内容时,它们必须使用正确的标头和参数。 标头包含用于标识资源的有用元数据,例如状态代码和授权。 通过 HTTP 传输的信息可以是 JSON、HTML、XML 或纯文本。 JSON 是 REST API 最常用的文件格式。
SOAP
简单对象访问协议 (SOAP) 是一种官方 API 协议。 W3C 维护着 SOAP 协议,它是最早的 API 架构之一。 它的设计简化了使用不同语言和平台构建的应用程序之间的通信。 SOAP 格式使用 Web 服务描述语言 (WSDL) 描述 API。 它是用XML编写的。 该格式强加了内置的合规性标准,以提高安全性、一致性、隔离性和持久性。 这些属性确保可靠的数据库事务,使 SOAP 更适合企业开发。

当用户通过 SOAP API 请求内容时,它会通过标准层协议。 响应采用 XML 格式,人类和机器都可以阅读。 与 REST API 一样,SOAP API 不缓存/存储信息。 如果以后需要数据,则需要再次请求。 SOAP 支持有状态和无状态数据交换。
GraphQL
GraphQL 是 API 的查询语言。 它是一个服务器端运行时,可根据定义的数据集执行查询。 GraphQL 有特定的用例。 它的架构允许您声明您需要的特定信息。 与 REST 架构中 HTTP 处理客户端请求和响应不同,GraphQL 通过查询请求数据。

GraphQL 服务定义了类型和这些类型的字段,然后为每个字段和类型提供函数。 该服务接收 GraphQL 查询以进行验证和执行。 首先,它检查查询以确保它引用定义的类型和定义的字段。 然后,它运行关联的函数以产生所需的结果。 GraphQL 非常适合某些用例,例如从多个来源获取数据。 您还可以控制数据获取并调节较小设备的带宽。
Apache Kafka
Apache Kafka 是一个支持事件流的分布式平台。 事件流是从源实时捕获数据的过程。 源可以是数据库、服务器或软件应用程序。 Kafka系统由服务器和客户端组成。 通信通过 TCP 网络协议进行。 您可以将系统部署在硬件、虚拟机和容器上。 您可以在本地和云环境中执行此操作。

Apache Kafka 系统实时捕获数据、处理数据并对其做出反应。 它还可以将数据实时路由到首选目的地。 Kafka 捕获数据并将其存储在系统中,您可以稍后检索这些数据以供使用。 Kafka 支持数据的连续流动和集成。 这可确保信息在正确的时间出现在正确的位置。 事件流可以应用于许多需要实时数据流的用例。 其中包括金融机构、医疗保健、政府、运输行业和计算机软件公司。
AsyncAPI
AsyncAPI 是一项开源计划,可帮助构建和维护事件驱动的架构。 它的规范与 OpenAPI 规范有很多共同之处。 AsyncAPI 本质上是对 OpenAPI 规范的改编和改进,但存在一些差异。 AsyncAPI 架构混合了 REST API 和事件驱动的 API。 它处理请求和响应的模式类似于事件 API。

AsyncAPI 提供以机器可读格式描述和记录异步应用程序的规范。 它还提供了代码生成器等工具,使用户更容易实现它们。 AsyncAPI 改进了事件驱动架构 (EDA) 的当前状态。 目标是使使用 EDA 变得更容易,就像使用 REST API 一样。 AsyncAPI 计划提供支持事件管理的文档和代码。 REST API 中使用的大多数流程适用于事件驱动/异步 API。 使用 AsyncAPI 规范来记录事件驱动系统至关重要。 它管理和维护从事事件驱动项目的团队之间的一致性和效率。
Remote Procedure Call (RPC)
RPC 是一种软件通信协议,允许网络上不同程序之间的通信。 例如,程序可以从网络上的另一台计算机请求信息。 它不必遵守网络协议。 您可以使用 RPC 调用远程系统上的进程,就像在本地系统上一样。

RPC 在客户端-服务器模型上运行。 客户端程序请求,服务器程序以服务响应。 RPC 同步运行。 当程序发送请求时,它会保持挂起状态,直到收到服务器的响应。 RPC 最适合分布式系统。 它们最适合基于命令的系统,并且具有可提高性能的轻量级有效负载。
如何选择正确的 API 架构
正确的 API 架构取决于您的用例。 该架构决定了开发 API 的方法及其运行方式。 API 的架构设计定义了它的组件和交互。
在设计和开发 API 之前做出架构决策。 确定 API、层级、生命周期管理和安全性的技术要求。 API 架构设计包含结构层。 这些层指导开发并确保创建的 API 服务于其预期目的。