API 是什么?软件之间是怎么“互相办事”的?

IT那些事2026-10-02发布 WarpEdit
588 0 0

打开天气 App,你想知道今天有多少度。App 可以向天气服务取得数据,再把它画成你看得懂的温度和图标。让程序按约定调用另一方能力的这套接口,就叫 API。你点的是屏幕上的按钮,程序用的是 API。

天气 App 向天气服务的 API 入口提出请求并取得结果的手绘示意

一次查询怎么完成

API 的全称是 Application Programming Interface,中文通常叫“应用程序编程接口”。

假设做一个天气页面,向 Open-Meteo 查询气温。请求要给出地点的经纬度,并指定天气变量。例如,temperature_2m 表示距地面两米处的气温,放进 current 参数,就表示要取当前天气条件中的这一项[1]。

一次查询可以这样走:

  1. 页面发出请求。 它向约定的服务地址说明地点,以及“我要这一地点的当前气温”。这里的请求,就是程序按规定提出的一次调用;地点和天气项目叫参数。
  2. 天气服务处理请求。 它根据这些参数提供相应的天气数据。数据来自服务方的天气模型,页面不需要自己运行整套天气模型。
  3. 服务返回结果。 结果中可以有时间、气温数值和单位等字段,页面按约定找到需要的内容。
  4. 页面把结果画出来。 假如结果中的温度是 24,单位是摄氏度,页面就可以显示“24°C”。这个数字只是说明显示过程的示意值,不是实时天气或实测记录。
天气 App 发起查询、天气服务处理、返回数据和 App 显示气温的四步示意图
同一个 App 提出请求并显示结果,天气服务提供数据。24°C 为示意值,非实时天气。

你看到的太阳图标、字体和颜色,属于页面的显示设计。API 返回的数据与最终看到的界面,是这个过程中的两件事。

Open-Meteo 用 JSON 返回这类结果。JSON 是组织数据的文本格式,让程序区分时间、温度等字段。API 约定怎样调用能力,JSON 约定怎样组织数据;其他 API 也可以用别的格式。这里的当前天气条件来自服务方的天气模型[1],并不表示页面自己测到了气温。

API 与接口的关系

“接口”是个范围更宽的词。你点击的软件按钮和菜单属于用户界面,开发者写代码调用的程序接口则是 API。说到硬件时,USB-C 这样的连接口也会被叫作接口。

API 本来就是一种接口;在开发者聊天的语境里,“这个接口返回了什么”中的“接口”,往往直接指某个 API。

人通过界面使用软件,程序则按 API 的规则调用能力。这组供软件交互使用的能力与规则,就是 API 的接口约定[2]。

为什么要约定规则

回到天气页面。它需要的是某个地点的天气结果,并不需要知道天气服务内部怎样整理模型数据、用了哪些存储系统。

API 给双方划出合作边界:提供方说明能做什么、调用要给什么信息、结果怎样表达;调用方按约定使用。提供方可以调整内部实现,但要让已有调用继续工作,对外约定就需要保持兼容。

这也能解释“接入 API”这句话:开发者把自己的程序写成能按对方规则调用的样子,让已有能力进入自己的软件。天气页面可以调用天气服务,其他程序也可以借助各自的 API 查询资料、处理文件或控制某种功能。

API 不会自动替开发者完成这些连接。参数怎么组织,取得结果以后做什么,失败时怎样提醒用户,都需要调用方写好相应的处理。

所有 API 都要联网吗

天气例子用到了网络,但 API 的范围比网络服务大。

浏览器就内置了许多 API。网页可通过 Web Audio API[3] 调整音量或添加效果,音频处理由浏览器完成,调用本身不要求把音频送到远端服务器。素材可能从网络取得,也可能来自本机,那是另一个环节。

因此,API 可以连接网络上的服务,也可以让程序使用本机软件或组件的能力。它不一定是一条网址,也不一定对应另一个独立运行的 App。

电脑内通过 Web Audio API 调用浏览器音频能力,与通过网络调用远端天气服务的对照图
左侧的音频处理在本机完成;右侧通过网络调用天气服务。音频素材从哪里取得,是另一个问题。

有接口也要有权限

提供一个 API,并不意味着所有人都能随意使用它的全部功能。

有些公开数据接口允许匿名查询,有些调用则要带 API key 或访问令牌,供服务确认身份及权限。这些凭据的具体作用由服务决定。以 GitHub REST API 为例,认证令牌仍要具备相应的权限或范围[4],有令牌不等于能调用所有功能。

调用也可能失败。参数写错,服务可能返回错误说明;权限不够,请求可能被拒绝;网络中断,则可能根本收不到结果。Open-Meteo 的文档就列出了参数不正确时的错误响应。

“支持 API”还不足以说明能否接进你的软件。开放的能力是否符合需求、输入和结果能否处理、是否拥有调用权限,这些约定对得上,程序之间的合作才有基础。

参考资料(核对于 2026 年 10 月 5 日)

  • [1] Open-Meteo 官方文档:https://open-meteo.com/en/docs
  • [2] MDN 的 API 定义:https://developer.mozilla.org/en-US/docs/Glossary/API
  • [3] MDN 的 Web API 入门:https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction
  • [4] GitHub REST API 文档:https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...