微信扫码
添加专属顾问
我要投稿
从REST到MCP,一文掌握主流API协议的核心定位与适用场景,助你快速搭建AI开放平台。核心内容: 1. 主流API协议的技术特点与适用场景对比 2. RESTful API的设计理念与工程实践 3. 现代AI场景下的流式API与MCP协议演进
阿里妹导读
本文以开源项目 HiMarket 为背景,系统梳理了从传统Web应用到现代AI场景下的六种主流API协议,帮助开发者厘清不同协议的核心定位、技术特点与适用场景。
笔者近期参与了一个开源项目的建设:HiMarket。这个开源项目旨在帮助开发者,尤其是企业快速实现私有的 AI 开放平台,专注在对外提供 API 和 MCP 服务的管理上。因此,借此机会对主流 API 协议的功能和应用场景进行了梳理,以厘清容易混淆的概念。
API(Application Programming Interface,应用程序编程接口),顾名思义,是用来连接不同软件系统,以实现数据交互和服务共享的作用。构成上,它是一组规定或协议,定义了不同应用或组件之间,相互交互的方法。用三个关键词来定义 API 的核心能力,就是:定义规则、解耦系统、提升复用性。
广义上,我们也可以把 API 视为一种中间件,允许开发者访问和使用某些功能或数据,而无需了解背后的详细实现,从而降低软件系统的复杂度。例如,阿里云提供的 OpenAPI,就是提供给开发者的一系列应用程序编程接口,帮助开发者可以通过 API 的方式,来管理云上的资源、数据和服务等。
随着软件形态和应用场景的丰富,API 的种类也在不断被丰富。从最早的重量级 SOAP,到 Web 世界流行的 RESTful API,再到大模型语境下的流式 API,每一种新类型的出现都对应了新型软件形态下的不同工程解法。本文旨在对主流的 API 定位、功能、应用场景进行梳理,帮助开发者对 API 协议有一个全貌了解。
不同的视角,会有不同的分类方式。本文从应用场景,对 API 作了6种分类。
一、应用广泛的 RESTful API
REST(Representational State Transfer)是当下最广泛使用的架构风格,它基于 HTTP 协议,定义了一组设计约束和理念,他的核心思想是:一切都是资源(Resource),通过统一的接口来操作这些资源。并用 URL 来表示资源,用 HTTP 方法(GET/POST/PUT/DELETE)来定义操作。基于 REST 来构建的 API,我们称之为 RESTful API。
在 Web 世界里,资源通常对应一个 URL。例如:
https://api.example.com/users/123 → 代表一个用户资源
https://api.example.com/orders/456/items → 代表订单里的商品资源
这就像物理世界里,每一个门牌号都能唯一指向一间房子。最常见的开放平台,例如微信、支付宝、高德等开放平台,对外提供的 API 服务就是 RESTful 的。
优势
如何工作
一次典型的 REST 调用,分成客户端请求和服务端响应两个部分:
/users/123
GET
查询、PUT
更新Content-Type: application/json
)、认证令牌(Authorization: Bearer ...
)POST/PUT
请求,通常包含 JSON 数据请求示例:
POST /users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer <token>
{
"name": "望宸",
"role": "engineer"
}
200 OK
、201 Created
、404 Not Found
响应示例:
HTTP/1.1201 Created
Content-Type: application/json
{
"id": 123,
"name": "望宸",
"role": "engineer"
}
REST 的设计哲学迎合了互联网应用的爆发需求:轻量、直观、跨语言、易扩展,搭配 Swagger (现称 OpenAPI Specification, OAS)的规范,成为互联网世界应用最广泛的的 API 形态,是 Web API 协议的事实标准。
但随着应用场景的多样化,它也逐渐暴露出一些局限,因此出现了其他的 API 形态。
二、前端查询友好的 GraphQL
在移动互联网和前端复杂化的背景下,客户端需要的数据结构和后端返回的 RESTful 响应会出现对不上号的情况。
/users/123
返回了整个用户对象(包含地址、订单、权限等一大堆信息)。这不仅浪费带宽,还增加了解析开销。/users/123
,再调 /users/123/orders
,最后还得筛选。一个页面可能要发出三四次请求,性能和延迟都受到影响。这种不足在移动端、复杂单页应用、跨端应用尤为严重,因为客户端和网络环境资源有限。GraphQL 正是为了解决这个问题而出现的。它允许客户端“按需取数”,一次请求返回所需字段。
GraphQL 是 Facebook 在 2015 年开源的一种 API 查询语言与执行引擎。它的核心理念是:客户端自己决定要什么数据,服务端只返回所需字段。
和 RESTful 按资源划分不同,GraphQL 只有一个统一的入口(通常是 /graphql
),客户端通过查询语句(Query)来精确指定数据结构。打个比方来解释 GraphQL 和 RESTful 的不同:
优势
/graphql
,简化路由和维护。工作机制
GraphQL 的运作分三步:
POST /graphql HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"query": "{
user(id: 123) {
name
max
orders(limit: 3) {
id
total
}
}
}"
}
{
"data": {
"user": {
"name": "望宸",
"max": "https://cdn.example.com/max/123.png",
"orders": [
{ "id": "A001", "total": 99.9 },
{ "id": "A002", "total": 58.0 },
{ "id": "A003", "total": 199.5 }
]
}
}
}
可以看到:客户端只要“头像、昵称、三条订单”,服务端就不会多给一个字节。
三、面向微服务体系的 API
在性能要求不高的情况下,RESTful 足够好用。但进入微服务架构之后,问题变得复杂:
这里我们介绍3种大家熟悉的,用于微服务架构的高性能远程调用框架或实现范式。
Apache Dubbo
Apache Dubbo,由阿里开源,是一种 RPC(Remote Procedure Call)框架。核心特性包括:
gRPC
gRPC 作为 RPC 架构的一种变体, 由 Google 于 2015 年创建,相比 RESTful API,具备更高性能、更低延迟的特点。
Spring Cloud
在 Spring Cloud 体系里,最初的远程调用主要依赖 REST(基于 HTTP),通过 RestTemplate
或后来推荐的 WebClient
,后来出现了 Feign(声明式 HTTP 客户端),开发者用接口 + 注解就能调用远程服务,更贴近 RPC 的开发体验。
打个比喻,RESTful 是公路运输(HTTP + JSON),虽然灵活,但车流量大了容易堵车;RPC 是修好的高铁轨道,列车运行高效、可预测,适合点对点的大规模通信。
四、面向实时通信的 API:WebSocket
实时性是互联网应用中诸多场景的刚需。比如:
如果仅靠 RESTful API 的请求-响应模型,客户端要么需要不断轮询服务器,要么只能被动等待。前者带来资源浪费,后者无法满足实时性。因此,WebSocket 就应运而生,它们提供了从服务端主动推送消息到客户端的能力,但方式和适用场景有所不同。
WebSocket 是 HTML5 标准中的全双工通信协议,它允许客户端与服务端在单个 TCP 连接上进行双向、实时数据交换。与 REST 不同,WebSocket 不是一次请求&一次响应的短时通信,而是一旦建立连接,就能随时互发消息。
优势
工作机制
Upgrade: websocket
);示例
const socket = new WebSocket("ws://example.com/chat");
socket.onopen = () => socket.send("Hello!");
socket.onmessage = (event) => console.log(event.data);
五、面向大模型场景的流式 API:SSE
大模型场景下流量具备如下特点:
因此,RESTful 不适合,因为其是客户端发出请求,等待服务端计算完毕,再一次性返回结果WebSocket 是双向通信,需要独立的协议升级、长连接管理、心跳检测,复杂网络(防火墙、代理、负载均衡)下,WebSocket 更容易被中断,WebSocket 的双向能力略显冗余,不是最优选择。
SSE(Server-Sent Events)是一种基于 HTTP 的单向流式传输机制,服务端可以不断通过同一连接向客户端推送事件流,天然适合在对话 Agent 的场景。
优势
data:
数据块,客户端就能实时接收。Last-Event-ID
,能从中断点恢复。工作机制
EventSource
向服务端发起 HTTP GET 请求;Content-Type: text/event-stream
并保持连接;data: hello
data: world
示例
const source = new EventSource("/events");
source.onmessage = (event) => console.log("New data:", event.data);
打个比喻理解三者的不同,WebSocket 是打电话,双方可以随时打断对方说话。SSE 是电台广播,服务端不断播放节目,客户端调频收听。而 RESTful 是写信,必须一来一回。相比 WebSocket 的电话模式,SSE 更轻量,适合单向推送。关于 WebSocket 和 SSE 的选型详情,请阅读《大模型推理主战场:什么才是通信协议标配?》
。
六、面向 MCP 场景的 API
MCP 本质上也是一种 API,作为 MCP Server 向大模型客户端提供应用程序编程接口。早期,MCP 官方采用了 SSE 协议,但是之后变更成 Streamable HTTP 协议。
HTTP + SSE 存在的问题
HTTP+SSE 的传输过程实现中,客户端和服务器通过两个主要渠道进行通信。
这就导致存在下面三个问题:
Streamable HTTP 的改进
Streamable HTTP 是 MCP 协议的一次重要升级,通过下面的改进解决了原有 HTTP + SSE 传输方式的多个关键问题:
因此,相比 SSE,Streamable HTTP 在稳定性、性能和客户端复杂度上都有了大幅提升。
七、总结和展望
API 的演进史就是软件工程不断应对新问题的过程。从 SOAP 的繁琐,到 RESTful 的简洁,再到 GraphQL 的灵活,从单向的 HTTP 请求,到实时双向通信的 WebSocket,再到大模型语境下的流式 API,每一次形态的出现,都是在性能、灵活性、实时性之间找到新的平衡点。
未来,随着 AI 原生应用的丰富,API 还会继续演进,并会衍生出 API 管理方面更多的诉求。近期,Higress 开源了开箱即用的 AI 开放平台 Himarket,旨在高效、统一管理 RESTful API、MCP 这些对外提供服务、数据、应用的接口,欢迎试用。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-09-18
开源Graph Builder:将文档转化为知识图谱
2025-09-18
Parlant:为企业级应用而生的开源LLM智能体框架,打造“AI员工监工”,让LLM可解释、可审计
2025-09-17
苹果 macOS 本地部署最新 GPT-5 CodeX,网友集体抛弃 Claude Code
2025-09-17
腾讯开源了个知识库系统,在飞牛NAS上部署玩玩!
2025-09-17
Qwen3-Next 首测!Qwen3.5的预览版?但为什么我的测试一塌糊涂?
2025-09-17
Microsoft 推出用于更长对话式 AI 音频的 VibeVoice 且开源
2025-09-16
[开源]Docling:AI时代的全能文档处理引擎
2025-09-15
如何使用 SGLang 部署 LongCat-Flash 模型
2025-07-23
2025-08-20
2025-09-07
2025-07-23
2025-08-05
2025-07-14
2025-08-20
2025-07-29
2025-07-12
2025-07-31
2025-09-17
2025-09-09
2025-09-08
2025-09-07
2025-09-01
2025-08-16
2025-08-13
2025-08-11