乐于分享
好东西不私藏

API、SDK和插件到底有什么区别?

API、SDK和插件到底有什么区别?

第一次接触编程时,你可能会遇到几个经常出现的词:

  • API
  • SDK
  • 插件
  • 框架

它们都和软件功能的复用、接入或扩展有关,但解决的问题并不一样。

程序员可能会说:

“这个功能需要调用 API。”

也可能会说:

“直接用官方 SDK 接入吧。”

还有时候,他们会建议:

“安装一个插件就可以了。”

这些话对于初学者来说很容易混淆。

今天我们就用一个天气 App 来理解三个最常见的概念:

「API 是通信通道,SDK 是开发工具包,插件是软件扩展。」

一、先看一个天气 App

假设你正在开发一个天气 App。

用户打开 App 后,希望看到:

  • 当前温度;
  • 天气状况;
  • 空气质量;
  • 未来几天的天气预报;
  • 日出和日落时间。

但这些数据通常不在你的 App 里,而是在天气服务商的服务器上。

因此,你的 App 需要向天气服务商请求数据:

  1. App 发送请求;
  2. 天气服务接收请求;
  3. 服务器查询天气数据;
  4. 服务器返回结果;
  5. App 把结果展示给用户。

在这个过程中:

  • 「API」 规定 App 如何获取天气数据;
  • 「SDK」 帮助开发者更方便地接入天气服务;
  • 如果其他软件想增加天气功能,则可以通过「插件」进行扩展。

二、API:获取天气数据的通道

API 是 「Application Programming Interface」 的缩写,中文通常翻译为“应用程序编程接口”。

简单来说:

「API 是不同软件之间约定好的通信方式。」

在天气 App 中,API 就是 App 获取天气数据的通道。

你的 App 可能向天气服务发送这样的请求:

ounter(linehttps://api.weather.example.com/current?city=zhengzhou

天气服务收到请求后,返回一段数据:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(line{  "city": "郑州",  "temperature"25,  "weather""晴",  "humidity"40}

App 再把这些数据转换成用户能看懂的界面:

郑州25℃湿度 40%

你看到的这个网址,只是 API 的一个访问入口。API 的核心并不是网址本身,而是背后约定好的通信规则。

这些规则会说明:

  • 请求应该发送到哪里;
  • 需要提供哪些参数;
  • 返回的数据是什么格式;
  • 出错时会返回什么信息。

天气服务背后的服务器,则负责接收请求、查询数据并返回结果。

它通常不会关心你的 App 长什么样,也不会帮你设计按钮、颜色和页面布局。

所以,API 的核心可以概括为:

「一套让程序能够使用另一个程序功能的约定。」

三、SDK:开发者使用的工具包

SDK 是 「Software Development Kit」 的缩写,中文通常翻译为“软件开发工具包”。

简单来说:

「SDK 通常是服务商或平台方提供给开发者的一整套工具,用来更方便地接入某项功能。」

当然,你可以不使用 SDK,直接根据 API 文档自己编写代码。

但这样可能需要自己处理:

  • 拼接请求地址;
  • 添加身份验证信息;
  • 发送网络请求;
  • 解析返回数据;
  • 处理网络错误;
  • 转换数据格式。

如果天气服务商提供了 SDK,使用方式可能类似下面这样。这里的代码只是一个简化的示意:

ounter(lineconst weather = await weatherSDK.getCurrentWeather("郑州");

SDK 会在背后帮你完成很多重复工作。

因此:

「API 是通信规则,SDK 是帮助开发者使用这些规则的工具包。」

SDK 通常会封装 API,但它不一定只包含 API 调用,也可能包括:

  • 示例代码;
  • 开发文档;
  • 类型定义;
  • 调试工具;
  • 错误处理功能。

四、插件:给已有软件增加能力

插件和 API、SDK 的作用不太一样。

插件通常是:

「附加到已有软件中的扩展程序,用来增加原本没有的功能。」

假设你已经有一个天气 App,但它原本只能显示当前温度。

现在你想增加:

  • 降雨提醒;
  • 空气质量地图;
  • 桌面小组件;
  • 户外运动建议;
  • 特殊天气通知。

如果这个 App 支持插件系统,开发者就可以在不重写整个 App 的情况下,通过插件增加新功能。

插件可以理解成什么?

可以把一个软件想象成一台已经组装好的电脑。

插件就像额外安装的功能模块,可以给原来的软件增加新的能力。

常见的插件包括:

  • 浏览器插件:增加网页翻译、广告拦截功能;
  • 编辑器插件:增加代码补全、主题和调试能力;
  • 图片软件插件:增加滤镜和导出格式;
  • 内容管理系统插件:增加评论、支付和 SEO 功能;
  • 游戏插件:增加地图、界面或其他功能。

插件通常依附于一个已有的软件运行,并且需要遵守这个软件规定的扩展规则。

五、API、SDK 和插件有什么区别?

现在可以把三者放在一起比较:

概念
它是什么
解决什么问题
天气 App 中的例子
API
程序之间的通信方式
程序如何获取数据
获取天气数据
SDK
开发者使用的工具包
如何更方便地接入功能
快速接入天气服务
插件
已有软件的扩展程序
如何给软件增加能力
增加降雨提醒功能

用一句话概括:

「API 是通道,SDK 是工具包,插件是扩展。」

它们分别解决不同的问题:

  • API 解决“程序之间如何通信”;
  • SDK 解决“开发者如何更方便地接入”;
  • 插件解决“如何给已有软件增加功能”。

六、三者可以一起使用吗?

当然可以。

在一个真实项目中,API、SDK 和插件经常会同时出现。

比如,你开发一个天气插件,用来给某个办公软件增加天气提醒功能。

这个插件可能会:

  1. 使用天气服务提供的 SDK;
  2. SDK 再调用天气服务的 API;
  3. 插件把天气数据展示在办公软件里。

它们之间的关系可以表示为:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line天气插件   ↓天气 SDK   ↓天气 API   ↓天气服务

在这个例子中:

  • 「API」 负责提供天气数据;
  • 「SDK」 负责简化 API 的调用过程;
  • 「插件」 负责把天气功能扩展到已有软件中。

所以,“开发一个插件”和“调用一个 API”并不矛盾。

插件是最终扩展到软件中的功能,API 是它获取数据或使用外部服务的方式,SDK 则可能是开发插件时使用的工具。

结语:先看它解决什么问题

API、SDK 和插件并不是三个互相竞争的技术名词。

它们只是从不同角度描述软件之间的协作方式:

「API 负责连接,SDK 负责简化开发,插件负责扩展已有软件。」

在天气 App 的例子中:

  • 通过 API 获取天气数据;
  • 使用 SDK 更方便地接入天气服务;
  • 通过插件把天气功能扩展到已有软件中。

以后再看到这些词时,不必先记住复杂的英文全称。只要先判断它解决的是什么问题:

是程序之间怎么通信?是开发者如何快速接入?还是给已有软件增加功能?

分清这三个问题,你就能理解 API、SDK 和插件之间最核心的区别。