浏览器不是访问 Web 的唯一入口——程序之间也可以直接对话,这套对话的规矩叫 API。它的意义在于把"给人看的页面"和"给程序用的数据"分开,于是同一份内容,能被 Apps、脚本、别的系统各取所需。
1-3 提到"专用应用程序"是绕过浏览器的另一条路,当时只说了它省流量。这一篇就把那条路正式命名并展开——它叫 API。前面几篇讲的一直是"浏览器怎么取、怎么画",这一篇要说明的是:Web 这套技术不只是给浏览器用的,它已经变成程序之间通用的接线方式。
一、谁来跟服务器讲话
先把"用户"这件事拆开——跟服务器说话的,未必都是人:
- 人在用浏览器:要的是一整页能看的东西(带样式、带图片)。
- 程序在调 API:要的是一段能用的数据(字段和值)。
这两种需求长得很不一样。人需要排版、需要按钮;程序只需要数据,它自己知道怎么展示。如果让程序去下载一整个网页、再从里面挑出需要的那几个数字,那是巨大的浪费。 API 就是为解决这个浪费而生的。
二、API 这个词到底指什么
API 的全称是"应用程序编程接口"。中文里听着绕,其实就一句话:它是一份约定——你按这个格式问,我就按这个格式答。
用一个生活里的比喻:去餐厅点菜。
- 菜单就是 API:它告诉你有哪些菜可以点、每道菜叫什么名字。
- 你按菜单点,厨房就按菜单做——你不用知道厨房怎么炒的。
- 如果菜单上没有的菜,你说破天也没用——接口没开放的功能,程序也调不到。
所以 API 的价值不在"能连上",而在"双方约定好了怎么说话,于是可以各管各的":服务器随便改内部实现,只要菜单没变,调它的程序就不用跟着改。
三、今天最常用的几种"说话风格"
API 不是只有一种写法。教材成书时最常见的对比是"页面 vs API",今天已经细化成好几种风格,各有各的适用场景:
| 风格 | 一句话 | 适合 |
|---|---|---|
| REST | 用网址表示"要什么",用动词表示"做什么" | 对外开放的接口,最普及 |
| WebSocket | 一次连上、双向keep着,随时能互相推 | 聊天、实时协作 |
| GraphQL | 由调用方说"我要这几个字段",只给这些 | 前端复杂、字段多变 |
| gRPC | 二进制、快,适合服务之间内部通信 | 自己系统内部 |
| Webhook | 反过来——有事我通知你,不用你一直问 | 事件通知 |
其中 REST 是绝对主流。理解它有一句口诀:网址是名词(要哪个东西),动词在动作里(是要、是改、是删)。比如"看第 42 号商品"和"下单",网址不同、动作也不同。
四、动手 Demo:页面和 API,拿回的东西差多少
下面这个 Demo 拿一次的对比算给你看:同样一件事,用浏览器打开页面和用程序调 API,拿回的数据量差多少;顺带把今天各种 API 风格的采用率列出来。
page = 1.2 * 1024 # KB,整个页面的资源
api = 2.0 # KB,一段 JSON
print("页面 %.0f KB,API 约 %.0f KB,差 %.0f 倍" % (page, api, page / api))
实跑输出:
--------------------------------------------------------------------
D7 独立于浏览器之外的 Web 连接机制:API
--------------------------------------------------------------------
同样是【跟服务器讲话】,页面和 API 是两套说法:
----------------------------------------------------------------------------------------
方式 要什么 拿回什么
----------------------------------------------------------------------------------------
浏览器打开页面 一整个网址 HTML+CSS+图片,1.2 MB
程序调用 API 一个接口名加参数 一段 JSON,约 2 KB
同样一件事,API 拿回的数据量只有网页的 1/614。
这正是 API 存在的理由:浏览器是给人看的,API 是给程序用的。
今天程序之间说话,主要用这几种风格(Postman 2025,受访团队采用率):
----------------------------------------------------------------------------------------
风格 采用率 特点
----------------------------------------------------------------------------------------
REST 93% 最普及,用网址加动词表达,缓存方便
Webhooks 50% 由服务反过来通知你,不用轮询
WebSockets 35% 长连接,双向,聊天和实时必备
GraphQL 33% 客户端说要哪些字段,只给这些
SOAP 25% 老一代企业级,规矩重、仍有人用
gRPC 14% 二进制协议,内部服务之间最快
Server-Sent Events 12% 服务器单向推消息给浏览器
注意几十个百分点的合计超过 100%:一个团队往往同时用好几种,
最常见的是【对外 REST、对内 gRPC、要实时就加 WebSocket】。
读这个输出:1/614 这个比例说明 API 为什么快——它只拿数据,不拿"怎么显示"。而下面那张表最该记住的是最后一句:风格不是选边站,是分场合用。对外要让人看得懂、方便调试,用 REST;自己系统内部要快,用 gRPC;要实时,加 WebSocket。一个团队同时用好几种是常态,不是混乱。
五、⚠️ 2026 现状
教材 2024 年出版,"页面 vs API"这个大框架没变,但有三处明显的新趋势:
- API 的地位从"配套"升到了"主体"。今天很多系统是先设计 API、再让网页和 App 都来调它(这叫 API 优先)。教材写的时候,API 更多是"给专用 App 用的补充通道";今天它已经是很多公司的主要产品形态——甚至有公司只卖 API,没有网页。
- "给 AI 用"成了新的一类调用方。除了人和程序,今天的 API 还要面对由 AI 自动发起的调用。这带来一个新要求:接口要能自我描述(机器读了就知道怎么用),否则 AI 也没法正确调用。
- 实时需求推高了长连接的比例。WebSocket 这类长连接(连上就不挂断、随时互推)用得越来越多,因为轮询(每隔几秒问一次"好了吗")太浪费——这也是 1-3 说过的"少要一点"的另一种体现。
30 秒实验
不用写代码,用浏览器就能看一眼 API 长什么样:
- 在地址栏里打开一个公开的接口地址(很多网站提供这类示例地址,形如
https://.../api/...)。 - 你会看到页面上没有排版、没有图片,只有一段花括号包起来的数据——那就是 API 的"回应"。
- 对比一下刚才那个网站的首页:同样来自一台服务器,一个给人看,一个给程序看。
然后想一想:你手机里那些 App,是不是都在悄悄地调这种接口?
常见误区
-
错误:API 就是网页的另一个地址。——纠正:它是另一套"说话方式",不是另一个网址。网页返回的是"给人看的整页",API 返回的是"给程序用的数据"。同一个服务器可以同时提供这两种——你在浏览器里看到首页,App 里看到的是同一台服务器回的接口数据。
-
错误:API 只给外部开发者用。——纠正:一个系统的内部也是靠 API 拼起来的。今天的大系统常被拆成很多小服务,它们之间就是互相调 API。所以 API 不是"对外开放的窗口",更是"内部沟通的语言"。
-
错误:用了 API 就更快更省,所以能上就上。——纠正:风格要配场合。对外开放的接口用 REST 最省心(好懂、好调试、能缓存);自己内部要极致性能才考虑 gRPC。盲目追新用一套复杂方案去解决简单问题,是常见的浪费——这也是那张采用率表里 REST 依然 93% 的原因。
-
错误:接口一旦发布就随便改,反正没人管。——纠正:API 是"菜单",改了菜单别人点菜就出问题。所以正规做法是保留旧版本、新增而不是替换。这不是技术洁癖,是因为调你接口的可能是一堆你根本不认识的人(甚至包括 AI)。
自测三问(点开对答案)
1. 为什么说 API 让"服务器和调用方可以各管各的"? —— 因为 **API 是一份约定,约定之外的东西可以随便改**。只要菜单上的菜名和上菜格式不变,厨房怎么装修、换什么灶,点菜的人都不用管。**这正是它能支撑"很多团队独立开发"的原因**——大家只认约定,不认内部实现。 2. 网页和 API 都是从那台服务器来的,为什么一个大一个小(1.2 MB 对 2 KB)? —— 因为**网页多带了"怎么显示"这一整套东西**:样式、脚本、图片,它们的目的都是让人看得舒服。而 API 只回**数据本身**,显示的事交给调用方。**所以省下来的不是"内容",是"包装"**——这也正是 1-3 里 App 比网页快的原因。 3. 为什么"对外 REST、对内 gRPC"会成为常见搭配? —— 因为**两边的受众不同**。对外的调用方是不认识的人和第三方,要的是**好懂、好调试、能缓存**;系统内部是自家服务之间通信,要的是**快和体积小**。**同一件事在两个场合下最优解不同**——这不是互相矛盾,是分工。- ☐ 下一节(1-8 Web系统的设置场所:客户端服务器系统、本地部署)
相关笔记
- 浏览Web页面 —— 专用 App 走的那条路
- 浏览器的功能 —— 上一篇:回到用户这一头
- Web系统的设置场所 —— 下一篇:这套东西放哪儿
- 是谁在负责收发数据(应用程序、P2P应用) —— 网络课里的"谁在收发数据"
- 🕸️ Web技术原理 · 索引 —— 全课路线图