API:互联网是如何在幕后工作的?

API:互联网是如何在幕后工作的?

我们每天都通过使用笔记本和移动电话与朋友、家人以及同事沟通,那么程序之间是如何相互沟通的呢?

API是我们这个现实生活中隐藏的“骨干”——让软件程序互相通信。而今天“API经济”正在迅速的改变世界的交互方式,照片分享、网上购物……越来越多的事物都通过API进行碰撞。因为API,技术创新正以比以往更快的速度发生。如果你会编写软件,那么你或许已经熟悉API,但是其余的呢?API的精确意义是什么?为什么它如此重要?

API:软件的支柱

在最基本的层面上,一个API是一组决定一个程序如何与另一个通信的规则。在你使用PC的时候,API让数据在不同应用之间的传输成为可能,如从一个电子邮件中复制一个链接到Word文档中。

在Web上,你可以把API想象为一个电话系统:当一个应用想从另一个应用那里获取信息时,它会“调用”另一个应用的API。举个例子来说,如果你想建立一个应用为用户显现最近的、用户朋友最喜欢的餐厅,你可以使用Yelp API获取餐厅数据(Yelp是美国点评网站)以及 Facebook API获取用户朋友喜欢的数据。当用户打开应用时,应用的内部代码将调用Yelp和Facebook的API来获取所需的数据。

图1:用户访问一个网站,该网站调用Facebook API来获取数据

在Web API的世界里,诸如Facebook、Google Map、Foursquare等大的服务器允许较小的应用“捎带”它们的数据。例如,许多的应用允许用户使用Facebook登录,而这就是通过Facebook API触发的。

API以一种可控的方式向外界陈列一块软件内部数据和功能,允许一个应用共享数据以及“代表”其他应用的执行行为,而不需要开发者分享他们所有的代码。在这种规模上分享代码将降低效率,此外还会带来重大的安全威胁。API允许这种不分享实际代码的集成。包括开源软件在内,API都是有用处的,因为大多数开发者没有时间和耐心去为使用某一块功能而浏览成千上万行代码。相反,该功能只需通过一个API就可以被使用。

如果没有API,很难想象应用之间如何连通。API允许应用相互交谈,因此更具创新性和一致性的应用被创建。试想一下,如果Google Map没有提供一个API,那么在该互联网上相关的每一个移动应用和网站必须重新实施其地图系统,这是一个非常艰巨的任务。对于一个公司而言内部的API对增加公司共享资源也是非常有用的,例如一个维基百科的软件开发者可以创建一个API以支持所有终端用户(包括网站、iOS、Android和黑莓应用)使用的维基百科应用,以避免这些应用重复的复制代码,它们可以通过一个API共享数据。API通过限制外部访问特定子集(通常是数据交换的功能)简化了软件开发的复杂性。正因为如此,如今很多新的软件开发周期可以是几周,而不是以往的几个月或几年。

API为何如此重要?

在现代社会中,API是非常重要的,因为他们解释了开发者是如何构建一个可以“插入”大服务(如Twitter和Facebook这样的社交网络或像Dropbox、AccuWeather这样的公用事业)的应用。一个手机游戏,如FlappyBird,可以使用Dropbox让玩家在Dropbox云中存储他们的游戏和设置参数,而不需要其本身构建一个云存储系统;一个开发者可以搭载Uber API设计一个提供打车服务的地图应用。API可以在很大程度上节省开发者和用户的时间。用户这块怎么说呢?试想一下,如果Facebook不提供API的话,用户就必须为每个应用创建一个单独的用户名和密码,而不能简单的点击“通过Facebook登录”。

API实现了现代Web的良好体验。开发者可以挖掘和选取API创造全新的体验。从Google到Twitter再到Facebook……,开发者有数千个API选择。一个常见的API应用例子是“共享”图标,你可以在网站文章、视频等地方发现它的身影。当你点击这些分享链接的时候,意味着一个API在被调用。另一个常见的API应用是网站下面的评论系统,如果们所知道的Disqus,它允许用户无需网站所有者做任何额外操作的前提下发布和查看评论。说到这里,你可能已经注意到了,API是非常普遍的,它加速了创新的步伐,它让每一个新的开发者在不重新“发明轮子”下就可以创建功能。

API的商业模式

正如推断的那样,API经常被公司用来获取利益。图3显示了四个通用的API商业模式,公司通过这些模式让API向业务目标迈进了一步。图中所标注的“Developer”在这里特指利用API的软件件开发人员。

  • Free:顾名思义,公司或组织不花一分钱就可以获取该API。对于免费共享API的公司(如Google和Facebook)而言,这一举措可能让公司获得更多的用户,其原因是开发者使用该API起到很大的传播作用,又或者仅仅是因为API的免费和开源。
  • Developer Pays:在开发者付费模式中,API或通过它的数据对开发者而言是有价值的,他们愿意为访问支付费用,例如PayPal,通过payments API让网上支付变得更简单,不过需要付费才能访问该API。
  • Developer Gets Paid:开发者获得报酬模式,一个公司可能会支付给开发者一定的酬劳以让其使用公司的API。这种情况常见于联署方案或收益分享方案中,如开发者使用亚马逊的API,当用户是由该开发者“引导”进入亚马逊时,开发者会获得相应的酬劳。
  • Indirect:间接模型覆盖了其他公司可能从API获利的方式。例如,为企业提供软件来管理他们销售周期的Salesforce公司可以通过更昂贵的合同来向其业务客户销售它的API。

一个API就是一个承诺

目前API存在的主要问题是它们不一定是永久性的。因为,今天一个公司提供一个API并不能意味着你明天还能够使用。例如,Twitter在2012年底限制了第三方访问其API,而这样做的后果是所有涉及该API的客户端全部遇难,这也迫使用户不得不使用Twitter官方应用和网站,用户也不得不忍受Twitter随心所欲向用户显示的广告。或许它会借口称这么做是为了更具凝聚力的用户体验,但是对于许多依赖Twitter API的开发者来说,这意味着,他们这部分业务的终结。

类似的例子是常见的,那些提供API的初创公司常有遭遇关闭或收购的命运。由于Web API仍处于初级阶段,还有很多东西要学,所以API提供者应该清楚这样一件事:一个API就是一个承诺,一旦其他人很依赖它,那么维持它并保持活跃就显得至关重要了。

最后

幸运的是,在大多数情况下,API是鼓励创新的。没有API,应用之间的通信将会被扼杀;软件开发者将不断重写并执行相同功能的软件;创新的脚步将会放缓。人们日常的分享、评论等将荡然无存。所以我们离不开API,随着世界越来越深入到技术革命,API将在我们每天使用的应用和网站中扮演更大的角色。

原文来自:medium

Comments are closed.