什么是 API?

2025-05-25

什么是 API?

向奶奶👵或不懂技术的客户👔解释 API 让你感到不安吗?让我来帮你!

开始之前,我想问你几个问题。你知道怎么做吗?

  • Authentic Weather知道您即将前往敦刻尔克的旅行期间的天气情况吗?
  • Trainline知道是否有空位(同一趟前往敦刻尔克的旅程)吗?
  • Airbnb将可用的公寓放在地图上(我还需要说“敦刻尔克”吗)?

男人的大脑爆炸

过去几年,API(也称为应用程序编程接口)在初创企业成长游戏中迅速蔓延。

引用@trainline_fr (以前称为 Captain-Train)后端工程师Paul Bonaud 的话:

API,是一个非常有趣和广泛的主题,不是吗?

对于非技术用户来说,理解 API 可能颇具挑战性。什么是 API?通过 API 可以共享什么?数据?服务?如何设计 API?如何编写 API 代码?

因为我问了自己所有这些问题(以及更多),所以我决定是时候更好地理解 API 的含义了。虽然这有点吓人——尤其是对于非技术背景的人来说——但我相信大家会觉得它很有趣。我计划写一些关于各种主题的文章:

  • 什么是 API?
  • 它是如何工作的?
  • 谁在使用它?
  • ETC…

但让我们从头开始。

什么是 API?

API(应用程序编程接口)被定义为一组函数(执行特定任务的编码程序),两个软件可以通过这些函数在无需任何人工干预的情况下相互通信。API 是软件的抽象入口点,其中包含对开放接口及其行为的描述。

让我们来分解一下这个缩写词:

  • 应用程序:应用程序是指开发者想要与之交互的服务。这类服务可以是气象数据流、图像共享应用程序或开放数据门户。
  • 界面:界面是服务的入口。你必须通过这扇门才能与服务功能进行交互(例如,过滤某个城市的气象数据,在 Instagram 上发布照片……)。
  • 程序:程序是由开发人员编写的一组代码程序。程序旨在与应用程序交互,因此我们无需手动操作。例如,程序可以提交邮政地址来获取坐标(例如 Airbnb 或 Google 地图)。

API图

总结一下:API 是使用特定入口点(接口,也称为端点)与应用程序(或该应用程序中的某些功能)交互的程序。

好的,但是 API 有什么作用?

如今,API 的介绍已经很全面了。你会发现很多文章都说“每个开发者都需要知道的 XXX 大 API”。但 API 的基础知识并没有得到简明扼要的解释,非技术用户仍然难以理解。

API 允许开发人员访问服务。通常说 API 暴露了一项服务。

我们已经在上面看到了;服务可以有多种形状和形式:实时数据流(例如,Twitter)、地图(OpenStreetMap)、发布图片(Instagram)。

开发人员编写使用这些 API 的程序。

API 可用于各种环境:

👉 在封闭的环境中:

  • 跨部门共享公司数据
  • 公开由多个数据源组成的数据库序列化
  • 在公开发布 API 之前,在安全环境中对其进行测试

👉在开放的环境中:

  • 向世界公开数据:思考开放数据门户
  • 允许其他公司在你的应用程序中提供他们的服务:想想 Giphy 与 Slack、Zapier 的集成……

让我们尝试一个比喻

谈到技术问题时,比喻可能比较棘手。但以电力网络为例,我们很容易理解 API 的精髓。

我们先从电力供应商开始:

  • 该供应商生产和分销一项服务:电力
  • 为了分发这项服务,供应商依赖基础设施:电网(车站、输电线路、电线杆、插座)

现在,我们以一盏需要消耗电的灯为例:

  • 为了使灯工作,它需要连接到电网
  • 为了连接,该灯配有适合标准插座的插头

插座是灯具耗电的标准化入口点(接口)。API 是程序使用应用程序的标准化入口点(接口)。

API 允许开发者委托他们需要使用的服务。同样,灯的主人也可以将灯所需的电力委托给电力供应商。

让我们进一步探究。API 和电源插座都指定了用户如何使用服务。还记得我们的灯吗?它需要遵守一些使用服务的条件:

  • 引脚的数量和形状
  • 电压和频率
  • 电流类型
  • ETC…

API 将执行相同的操作并指定使用它们的条件:

  • 定义时间段内的 API 调用次数
  • 你可以做什么:阅读和/或写作
  • ETC…

由于插座标准化,您可以在家中轻松插接多盏灯。重要的是,每个插座的功能都类似:直接将电流接入您的家中。

API 和套接字是它们所公开的服务的抽象。

等等,什么?抽象?🤔

它们隐藏了客户所使用的服务的细节。

如果没有插座,你就得把灯的电线绕在墙外的电线上。灯根本不关心电网的细节。无论电力来自太阳能电池板还是风力涡轮机;无论墙内的电线是黑色、红色还是粉色;无论其他灯是否接入电网,它们都能正常工作。只要电力供应商满足灯的功能需求(如果你住在美国,则为交流电和110伏电压),供应商就可以随意修改其电网。如果没有这种抽象概念,你就得把灯的电线绕在墙里的电线上。

抽象的概念反过来也成立。电网并不关心你的灯是什么设计的。无论你的灯是宜家设计的还是威廉·瓦根菲尔德设计的,电网只关心插头和插座的匹配。即使没有灯插在插座上,电流也会从车站流向你的插座。

API 的工作方式相同。

如果没有 API,Authentic Weather 就需要定期获取 weather.com(或任何其他气象数据提供商)的数据。有了 API,Authentic Weather 不再关心每秒收到的气象数据的具体细节。只要数据流(可通过 API 访问)功能稳定,Authentic Weather 就很满意(其用户也同样满意)。

抽象反过来也一样。weather.com 的 API 并不关心你应用的配色方案。只要你的应用在预定义的条件下使用该 API,它就没问题。


这有帮助吗?请在评论区或推特上告诉我!

文章来源:https://dev.to/mercier_remi/what-is-an-api-4ao9
PREV
顶级免费 Heroku 替代品
NEXT
初学者需要掌握的 15 个 HTML5 最佳实践。