一、一句话分清
- API:一套通信规则、接口地址、数据协议,是「沟通标准」,看不见代码;
- SDK:封装好的代码工具包,是「现成工具」,内部已经帮你调用 API。
二、生活化比喻
把调用第三方服务比作寄快递:
- API = 快递公司规定的收发规则 地址、收件人格式、运费标准、快递单号格式,只告诉你怎么通信,不给你工具。 你可以手写纸条、自己打包去寄。
- SDK = 快递公司送你的完整快递工具箱 里面有打印面单的机器、打包袋、填单模板,开箱直接用,底层打包、填地址的逻辑它已经写好,不用你手动遵守复杂规则。
三、详细对比表
| 维度 | API | SDK |
|---|---|---|
| 本质 | 接口协议、访问规范(规则文档) | 编程语言代码库(工具包) |
| 形态 | URL、请求方式、入参出参、密钥 | .jar/.dll/npm 包 / PyPI 库等 |
| 作用 | 定义「怎么请求数据」 | 简化「调用 API 的繁琐代码」 |
| 依赖关系 | SDK 底层一定依赖 API | API 完全可以脱离 SDK 单独调用 |
| 使用门槛 | 高,需要自己写网络请求、处理加密、解析返回、处理报错 | 低,几行代码即可调用,底层细节屏蔽 |
| 跨语言 | 通用,任何语言都能发 HTTP 请求调用 | 分语言,Java SDK 不能直接用在 Python |
四、举个实际例子:豆包 AI 接口
1. 只用 API(不用 SDK)
你需要手动完成全部步骤:
- 拼接请求 URL
- 构造 HTTP 请求头、签名密钥
- 用 Python/JS 写网络请求代码
- 处理超时、401 鉴权、限流报错
- 解析返回的 JSON 数据
2. 使用官方 SDK
安装好工具包后,仅需几行代码:
# 不用管接口地址、加密、请求头 client = DoubaoClient(api_key="xxx") res = client.chat.completions.create(prompt="你好")
SDK 内部自动完成 HTTP 请求、签名、异常捕获,你只关心业务参数。
五、关键知识点
- 只有 API,没有 SDK 完全可行 所有 Web API 都能通过原生网络请求调用,不需要安装任何工具包。
- 有 SDK 一定有对应的 API SDK 只是对 API 的封装,不存在脱离 API 的 SDK。
- 优缺点总结
- 只用 API:灵活、体积小、跨语言通用,但代码量大、重复逻辑多;
- 使用 SDK:开发快、容错好、自动处理加密 / 分页 / 重试,但包会增加项目体积,受语言限制。
六、补充常见场景
- 后端对接支付、地图、短信:优先用官方 SDK,减少踩坑;
- 简易爬虫、轻量工具脚本:直接 HTTP 调用 API,不装 SDK 更轻便。
