在最基本的层面上,一个API是一组决定一个程序如何与另一个通信的规则。在你使用PC的时候,API让数据在不同应用之间的传输成为可能,如从一个电子邮件中复制一个链接到Word文档中。
在Web上,你可以把API想象为一个电话系统:当一个应用想从另一个应用那里获取信息时,它会“调用”另一个应用的API。举个例子来说,如果你想建立一个应用为用户显现最近的、用户朋友最喜欢的餐厅,你可以使用Yelp API获取餐厅数据以及 Facebook API获取用户朋友喜欢的数据。当用户打开应用时,应用的内部代码将调用Yelp和Facebook的API来获取所需的数据。
在Web API的世界里,诸如Facebook、Google Map、Foursquare等大的服务器允许较小的应用“捎带”它们的数据。例如,许多的应用允许用户使用Facebook登录,而这就是通过Facebook API触发的。
API以一种可控的方式向外界陈列一块软件内部数据和功能,允许一个应用共享数据以及“代表”其他应用的执行行为,而不需要开发者分享他们所有的代码。在这种规模上分享代码将降低效率,此外还会带来重大的安全威胁。API允许这种不分享实际代码的集成。包括开源软件在内,API都是有用处的,因为大多数开发者没有时间和耐心去为使用某一块功能而浏览成千上万行代码。相反,该功能只需通过一个API就可以被使用。
如果没有API,很难想象应用之间如何连通。API允许应用相互交谈,因此更具创新性和一致性的应用被创建。试想一下,如果Google Map没有提供一个API,那么在该互联网上相关的每一个移动应用和网站必须重新实施其地图系统,这是一个非常艰巨的任务。对于一个公司而言内部的API对增加公司共享资源也是非常有用的,例如一个维基百科的软件开发者可以创建一个API以支持所有终端用户使用的维基百科应用,以避免这些应用重复的复制代码,它们可以通过一个API共享数据。API通过限制外部访问特定子集简化了软件开发的复杂性。正因为如此,如今很多新的软件开发周期可以是几周,而不是以往的几个月或几年。