什么是 API?

你可能早就看过 ”API“ 这个词了。操作系统、浏览器和应用程序在更新时通常都会宣布新的 API,但什么是 API 呢?

应用程序接口

API应用程序接口Application Programming Interface)的首字母缩写。

API 就像餐馆里的菜单一样,菜单提供了你在餐馆可以点的菜以及每道菜的描述。当你点了菜以后,餐厅的厨房会做好你点的菜,并把菜端上来。你不知道餐厅是如何制作食物的,而你也并不需要知道。

同样的,API 列出了开发人员可以使用的一系列操作,并说明了这些操作。比如:开发人员并不一定需要知道操作系统是如何进行 “另存为” 操作的,只需要知道如何调用 “另存为” 就行了。

这并不是一个完美的比喻,因为开发人员可能必须向 API 提供他们自己的数据才能获得结果。所以这或许更像是一个高级餐厅,你可以向餐厅提供你自己的配料来制作食物。

大致就是这样,API 允许开发人员利用平台的实现来完成基本工作,从而节省时间。这有助于减少开发人员需要创建的代码量,还有助于在同一平台为应用程序创建更高的一致性。API 还可以控制对硬件和软件资源的访问。

API 使开发人员的生活更轻松

假设你想为 Android 开发应用程序,Google 的 Android 系统提供了大量的 API,就像其他操作系统一样,让你的开发变得更加轻松。

比如:如果你想要嵌入 Web 浏览器以显示一个或多个网页,并不需要为你的应用程序从头开始编写自己的 Web 浏览器。你可以使用 WebView API 在应用程序中嵌入 webkit 对象。

如果你想从相机捕捉照片或视频,则无需编写自己的相机界面,你可以使用相机 API 将 Android 内置的相机嵌入到你的应用程序中。如果不存在这个 API,开发人员将不得不创建自己的相机软件并解析摄像头的输入。但是 Android 系统的开发人员已经完成了这些艰苦的工作,因此开发人员可以使用相机 API 嵌入相机,然后开始构建应用程序。而且,当 Google 改进相机 API 时,所有依赖它的应用程序都会自动利用这一改进。

这适用于每个平台。你想在 Windows 上创建一个对话框?有这个 API ;想在 Android 上支持指纹验证?这也有 API,因此你不必为每个不同的 Android 设备制造商测试指纹传感器。开发人员不必一遍又一遍的重复造轮子。

API 控制着对资源的访问

API 也用于控制对硬件设备和软件功能的访问,应用程序不一样具有使用许可。这就是为什么 API 经常在安全性方面发挥重要作用。

比如,如果你曾今访问过某个网站并在浏览器中看到该网站要求查看你的确切位置的消息,这是该网站正在尝试在你的浏览器中使用地理定位 API。Web 浏览器公开这样的 API,以便 Web 开发人员轻松访问你的位置——他们可以询问 “你在哪?”,浏览器便通过访问 GPS 或附近的 Wi-Fi 网络来查找你的物理位置。

但是,浏览器也会通过 API 公开这些信息,因为可以控制对其的访问。当网站想要访问你的确切位置时,唯一的方法就是通过位置 API 来获取。而且,当一个网站试图使用它时,你——用户——可以选择允许或拒绝这个请求。访问 GPS 传感器等硬件资源唯一的方法便是通过 API,因此浏览器可以控制对硬件的访问并限制应用程序可以执行的操作。

在 iOS 和 Android 等现代移动操作系统中也使用相同的原理,可以通过控制其中的应用程序对 API 的访问来实施权限管理。比如,如果开发人员尝试通过相机 API 访问相机,则可以拒绝权限请求,该应用则无法访问设备的相机。

使用权限的文件系统(如在 Windows、Mac 和 Linux 上执行的权限)具有由文件系统 API 执行的权限。典型的应用程序不能直接访问原始物理硬盘。相反,应用程序必须通过 API 访问文件。

API 用于服务之间的通信

API 也被用于各种途径。比如:经常可以看到嵌入 Google 地图的网站,该网站就是使用 Google 地图 API 实现的。Google 向 Web 开发者公开这样的 API,然后他们可以使用这些 API 在他们网站上实现复杂的对象。如果这样的 API 不存在,开发者可能必须创建他们自己的地图并提供他们自己的地图数据,以便在网站上放置一些交互式地图。

而且,因为这是一个 API,Google 可以控制第三方网站对 Google 地图的访问,确保他们以一致的方式使用它,而不是试图混乱地嵌入显示 Google 地图网站的框架中。

这适用于许多不同的在线服务。有 API 用于请求 Google 翻译,或者在网站上嵌入来自 Twitter 或 Facebook 的评论和推文。

开放授权 还定义了许多 API,允许你使用其他服务登录网站。比如:使用你的 Facebook、Google 或 Twitter 账户登录到新网站,而无需为该网站创建新的用户账户。API 是定义开发人员如何与服务进行通讯的标准协议,以及开发人员期望收到的输出类型。

如果你已经了解了这点,你就会对 API 的内容有更好的了解。最后,除非你是开发人员,否则你并不需要知道 API 是什么。但是,如果你看到软件平台或服务为各种硬件或服务添加了新的 API,开发人员应该会更容易应用这些功能。

LJason 译

原文:What Is an API?

如果你喜欢我的博客,那就请我吃冰淇淋吧(づ ̄3 ̄)づ╭❤~