什么是 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 的介绍已经很全面了。你会发现很多文章都说“每个开发者都需要知道的 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