API 究竟是什么?API 的含义

2025-06-07

API 究竟是什么?API 的含义

我在 dev.to 上发表的一篇帖子引发了一场关于“API”含义的激烈争论。在这篇文章中,我想就这个话题进行更深入的探讨。

一些背景故事

我一点也不喜欢“你应该知道的 50 件事”这类帖子,但我想通过我的“你绝对应该知道的 27 个 Web 开发术语”为社区做出贡献。

长话短说,我大胆地说这document.querySelector() 是一个 API。这是我最初的定义:

原生 API:原生 API 是编程环境中默认可用的内置函数。例如,以浏览器为例,我们称之为document.querySelector()用于选择 HTML 元素的 API。

一位读者立即评论道:

我停在了 Native API 上,这甚至不正确

另一位读者告诉我:

你非常热心,认为凡事皆有度,除非缺乏足够的知识支撑。出版前请人校对一下语言和技术,也会很有帮助。

我已经知道我的英语不是很好,毕竟它不是我的母语,但是,我也在努力!

由于对非建设性批评免疫,我总是忽略这些评论,但有趣的是,一个完全陌生的人仅通过看你的文章就能评估你的经验(我不会像另一个读者那样吹嘘我在网络开发方面有 21 年的经验)。

无论如何,回到我们的主要话题:API

document.querySelector() 是一个 API 吗?

那么它是什么document.querySelector()?它是一个函数吗?它是一个 API 吗?从技术上讲,它是document 对象的一个​​方法。方法是绑定到对象的函数。

querySelector()具体来说是一种用于选择 DOM 中的 HTML 元素的方法。

但你猜怎么着,我把它叫做 API 也没错。我真的很抱歉,亲爱的读者。Web开发,以及一般的编程,都充满了难以捉摸的术语

测试为例:30 年后,“单元测试”的含义仍然没有达成共识。有人说它是针对单个类或单个函数的测试。另一些人说它是针对工作单元的测试,而工作单元不再是单个函数了(如果你好奇,可以看看“单元测试的艺术”)。

我很好奇,想知道我是不是唯一一个把单个方法称为 API 的傻瓜,以下是我找到的资料。这来自 JavaScript 社区的杰出人物 Nicolas Bevacqua:

替代文本

在《JavaScript 应用程序设计》中,Nicolas 说道:

使用回调的一个主要示例可以在 addEventListener API 中找到

对于浏览器和 JavaScript 的新手来说,addEventListener这是一种任何 HTML 元素都可以从 EventTarget.prototype.addEventListener 借用的方法。

addEventListener是一种方法,但它也是一个 API,即开发人员可以与之交互的界面

API 再次来袭!

那么 API 到底是什么?

如果你去“Google”一下,API 是:

一组允许创建访问操作系统、应用程序或其他服务的功能或数据的应用程序的功能和过程。

严格来说,API 代表应用程序编程接口,即一组充当开发人员和底层系统之间的网关的函数(或方法)

但是如果我删除单词set,定义将变成:

允许创建访问操作系统、应用程序或其他服务的功能或数据的应用程序的功能和过程。

毕竟document.querySelectorEvent.prototype.addEventListener开发人员和底层系统之间不是有网关吗?

如果逐一采用这些方法,它们仍然不是一组函数,但我觉得它们是一个更复杂系统的表面(分别是 DOM 和浏览器中的事件驱动架构

对我来说,API 就是一个表面

如果你觉得这很离经叛道,别往心里去。我们仍然可以做朋友。

结论

我们在向初学者授课时应该严谨,但我还认为,从长远来看,向某人介绍一个难以理解的术语的浅显定义并不会造成任何伤害。

或者说确实如此。为此我感到内疚。但我不认为初学者和一般开发者应该被视为白痴,因为他们无法区分真正的应用程序编程接口 (API)和用于单点接触的 API术语

随着时间的流逝,他们会发现的。

善待他人并快乐地编码!

资源

原始帖子:您绝对应该了解的 27 个 Web 开发术语

有关 Web API 和接口的 MDN 文档

维基百科上的应用程序编程接口


最初发表在我的博客上

文章来源:https://dev.to/valentinogagliardi/what-s-an-api-really-the-elusive-meaning-of-application-programming-interface-2f93
PREV
创建 React App 的更好方法
NEXT
链表到底是什么?[第一部分]