API 类型有哪些不同分类?- Bump.sh

作者:API传播员 · 2025-12-29 · 阅读时间:6分钟

APIs在过去几年中变得越来越流行,它们能够连接产品、项目和人员。在本文中,我们将为您展示截至2022年8月最受欢迎的API类型及其分类。我们尽量避免偏见,但本文主要聚焦于最常用和最流行的技术。


API 的发展历史

从历史角度来看,API的概念已经存在很长时间,但它们在21世纪初开始迅速流行,尤其是在推动网络业务方面。通过API,经销商或业务合作伙伴可以访问流行平台,帮助客户快速找到所需的产品。

一些科技巨头,例如 Salesforce 和 Amazon,在早期发布了自己的API,这对行业产生了深远的影响,彻底改变了在线销售和购物的方式。随着时间的推移,API的应用场景不断扩展,现在几乎无处不在,包括社交媒体、云计算、通信、地图服务以及语音人工智能等领域。


RPC(远程过程调用)

RPC是最古老的API交互形式之一,其基本原理是通过远程服务器执行代码。可以将其视为一个带参数的简单函数,但在Web上下文中,它成为了一种API交互方式。

RPC主要设计用于操作,能够轻松执行过程和命令。然而,它的局限性在于高度依赖客户端,客户端需要明确知道端点及其调用方式。虽然RPC本身是一种方法,但它也有许多规范,其中最受欢迎的之一是 SOAP


SOAP

SOAP由微软和IBM于1998年推出,是一种通信协议。SOAP以其严格的XML格式和稳定性而闻名,曾被广泛应用于企业级系统。尽管如今大多数SOAP应用已被REST替代,但在某些遗留系统中仍然可以找到它的身影。例如,Salesforce是使用SOAP的知名公司之一。


REST(表述性状态传递)

客户端与服务器的交互,避免了为每个关系编写代码的繁琐步骤。

REST的核心特点包括:

  • 无状态性:客户端和服务器之间无需保存彼此的状态信息。
  • 标准化操作:基于HTTP协议,支持GET、POST等操作。
  • 异步支持:通过Webhooks实现异步请求。

REST API的描述通常使用OpenAPI规范(前称Swagger),这是目前最流行的标准之一。


OpenAPI 规范

随着REST API的普及,如何标准化描述API成为一个重要问题。OpenAPI(原名Swagger)是为此目的而创建的中性描述格式,现已成为描述REST API的主流标准。OpenAPI的社区支持非常活跃,为开发者提供了丰富的工具和资源。


GraphQL

GraphQL由Facebook于2012年创建,并在2018年转移到GraphQL Foundation。它是一种专注于数据查询的API语言,允许客户端精确请求所需的数据,而无需加载多余信息。

GraphQL的主要特点包括:

  • 单一端点:通过一个端点提供所有数据功能。
  • 灵活查询:客户端可以自定义请求的数据结构。
  • 模式驱动:API的模式是数据的唯一来源。

尽管GraphQL功能强大,但由于许多开发者更熟悉REST API,因此其学习曲线相对较高。


gRPC

gRPC是由谷歌创建的开源RPC框架,支持多语言跨平台开发。它使用HTTP/2作为传输协议,并采用协议缓冲区(Protobuf)作为消息格式。与传统JSON相比,Protobuf更快、更小,并能生成原生语言绑定。

gRPC的优势包括:

  • 二进制有效载荷:提高性能,减少请求大小。
  • HTTP/2支持:实现更高效的通信。

gRPC可以被视为RPC的增强版本,适用于高性能需求场景。


EDA(事件驱动架构)

与REST依赖请求/响应工作流不同,事件驱动架构(EDA)API采用订阅/发布模式,基于消息工作流实现异步操作。EDA API允许客户端订阅事件通知,而不是主动请求服务器响应。

EDA API在微服务环境中非常流行,能够帮助不同服务之间同步数据。为了规范EDA API,AsyncAPI标准应运而生。

AsyncAPI

AsyncAPI是一个开源标准,用于描述EDA API的规范。它基于OpenAPI设计,但针对异步需求进行了优化。AsyncAPI专注于应用程序和通信通道,并与CloudEvents等标准良好兼容。


常用的EDA协议

AMQP

AMQP由摩根大通于2003年创建,旨在建立开放的通信标准。它支持带注释的数据和自描述编码系统,具有较高的兼容性。

MQTT

MQTT是为带宽受限和不可靠网络设计的协议,最初用于监控沙漠中的车辆。如今,它已成为物联网领域的主流协议。

Kafka

Kafka由LinkedIn设计,用于处理大规模消息传输。它在微服务架构中表现出色,例如优步使用Kafka支持其300多个微服务。

WebSockets

WebSocket是一种全双工通信协议,支持客户端和服务器之间的实时通信。它在EDA生态系统中广泛应用,常与REST API结合使用。


结论

本文简要介绍了API的主要分类及其特点。随着技术的不断发展,API领域每天都有新的概念、工具和标准涌现。尽管本文中的部分内容可能会随着时间变得过时,但我们将持续关注这一动态领域,为您带来最新的技术趋势。

原文链接: https://bump.sh/blog/what-are-the-different-api-types