SDK 和 API 的通俗解释与区别
更新: 6/6/2026 字数: 0 字 时长: 0 分钟
这是一份写给前端开发者的实战科普文档。SDK 和 API 是日常开发绕不开的两个词,经常被混着说,但它们其实是两个不同层面的东西。
一:API 是什么?
API(应用程序接口) 可以理解为:两个软件之间「对话」的窗口。它规定好「你怎么问、我怎么答」,让程序之间能互相调用功能、交换数据。
用「餐厅点餐」来理解
- 你(顾客)= 你的应用程序
- 服务员 = API 接口
- 后厨 = 提供服务的服务器
你不用自己冲进后厨做菜,只要告诉服务员「我要一份番茄炒蛋」(发送请求),服务员把需求传给后厨,做好后再端给你(返回数据)。你不需要知道后厨怎么做的,只需要按菜单点单——这就是 API 的核心思想:屏蔽内部细节,只暴露一个可调用的入口。
一个前端最熟悉的例子
你调一个天气接口:
fetch("https://api.weather.com/now?city=beijing")
.then(res => res.json())
.then(data => console.log(data.temperature));你只管发请求、拿数据,至于天气数据是怎么采集、怎么算出来的,全由对方服务器负责。这个用来请求的地址和约定的格式,就是 API。
小结:API 是一个「接口/入口」,它定义了调用规则,让你能用别人的能力,但不关心内部实现。

二:SDK 是什么?
SDK(软件开发工具包) 可以理解为:一整套帮你快速开发的「工具箱」。它不是单个入口,而是把开发某项功能需要的东西打包好一起给你。
一个 SDK 通常包含什么?
- 封装好的代码库:把繁琐的调用过程包成简单的函数,你一行就能调用。
- 开发文档:告诉你怎么用。
- 示例代码 / Demo:照着抄就能跑起来。
- 辅助工具:调试器、命令行工具等。
还用「点餐」类比
如果说 API 是「服务员」,那 SDK 就是餐厅直接送你一个**「自助厨房套装」**——锅、调料、菜谱、半成品全配齐,你照着说明书操作,很快就能开火做菜,不用自己东拼西凑。
一个前端例子
比如你要接入某个地图功能,对方提供了 SDK:
import MapSDK from "map-sdk";
const map = new MapSDK({ key: "你的密钥" });
map.showMarker(116.40, 39.90); // 一行代码就标了个点背后其实也是在调对方的 API,但 SDK 已经帮你把「拼请求地址、处理鉴权、解析返回数据」这些脏活累活都封装好了,你只需调用现成的函数。
小结:SDK 是一套「开发工具包」,它通常把 API 封装在内部,再加上文档、示例、工具,让你开发更快更省心。

三:SDK 与 API 的核心区别
最关键的一句话:
API 是「一个接口/入口」,SDK 是「一整套工具包」。SDK 里通常就包含了对 API 的封装。
| 对比维度 | API | SDK |
|---|---|---|
| 本质 | 一个调用入口、一套通信规则 | 一整套开发工具包 |
| 包含内容 | 接口定义、请求/返回格式 | 代码库 + 文档 + 示例 + 工具(常含 API 封装) |
| 使用方式 | 自己拼请求、处理鉴权和返回数据 | 调用现成函数,细节已封装好 |
| 上手难度 | 相对高,需自己对接处理 | 相对低,开箱即用 |
| 灵活性 | 高,想怎么调就怎么调 | 略受限,按 SDK 设计的方式用 |
| 类比 | 餐厅的「服务员」 | 餐厅送的「自助厨房套装」 |
| 关系 | SDK 内部往往就是在调用 API | SDK ⊇ API(包含关系) |
一句话点透两者关系: 你可以只用 API(自己写请求逻辑,灵活但麻烦);也可以用封装了 API 的 SDK(开箱即用,省事但需依赖它的设计)。SDK 不是 API 的替代品,而是 API 的「打包升级版」。

四:实际开发中该怎么选?
| 你的情况 | 推荐 |
|---|---|
| 对方只提供了 API,没有 SDK | 直接用 API,自己封装请求 |
| 调用简单、只是偶尔请求一两个接口 | 用 API 更轻量,不必引入额外依赖 |
| 功能复杂(支付、地图、推送、音视频等) | 优先用 SDK,省去大量对接工作 |
| 想要更高灵活性、完全自主控制 | 倾向 API |
| 想快速上线、减少踩坑 | 倾向 SDK(文档、示例齐全) |
| 在意项目体积、不想引入庞大依赖 | 倾向 API(SDK 往往更重) |
选型心法:简单调用、追求轻量灵活 → 用 API;功能复杂、追求开发效率 → 用 SDK。 很多成熟服务两者都提供,按需选择即可。