什么是API?

你可能已经看到“API”这个词出现了。 操作系统,网页浏览器和应用程序更新通常会向开发人员宣布新的API。 但什么是API?

应用程序接口

术语API是首字母缩写词,代表“应用程序编程接口”。

想像一个API,就像餐馆里的菜单一样。 菜单提供了您可以点菜的菜单以及每道菜的描述。 当你指定你想要的菜单项时,餐厅的厨房会完成工作,并为您提供一些成品菜肴。 你不知道餐厅如何准备食物,而你并不需要。

同样,API列出了开发人员可以使用的一系列操作,并列出了他们所做的操作。 例如,开发人员不一定需要知道操作系统是如何构建并呈现“另存为”对话框的。 他们只需要知道它可用于他们的应用程序。

这并不是一个完美的比喻,因为开发人员可能必须向API提供他们自己的数据才能获得结果,所以也许它更像是一个高级餐厅,在那里你可以提供一些你自己的厨房配料。

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

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

假设您想为iPhone开发应用程序。 苹果公司的iOS操作系统提供了大量的API--就像其他所有操作系统一样 - 为了让你更容易使用它。

例如,如果您想要嵌入Web浏览器以显示一个或多个网页,则无需为您的应用程序从头开始编写自己的Web浏览器。 您可以使用WKWebView API在应用程序中嵌入WebKit(Safari)浏览器对象。

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

这适用于每个平台。 例如,你想在Windows上创建一个对话框吗? 有一个API 想要在Android上支持指纹认证? 还有一个API ,所以你不必测试每个不同的Android制造商的指纹传感器。 开发人员不必一遍又一遍地重新发明轮子。

API控制对资源的访问

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

例如,如果您曾访问过某个网站并在浏览器中看到该网站要求查看您的确切位置的消息 ,该网站正尝试在您的Web浏览器中使用地理定位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地图网站的框架。

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

OAuth标准还定义了许多API,允许您使用其他服务登录网站,例如,使用您的Facebook,Google或Twitter帐户登录到新网站,而无需为该网站创建新的用户帐户。 API是定义开发人员如何与服务进行通信的标准合同,以及开发人员期望收到的输出类型。


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

图片来源: patpitchaya /Shutterstock.com。

赞 (0)
分享到:更多 ()