阅读更多

2顶
0踩

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

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
  • 大小: 79.8 KB
  • 大小: 18.2 KB
  • 大小: 80.9 KB
2
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 互联网程序员都每天刷题嘛-learn-workflow-ide:学习工作流想法

    在幕后存储和版本控制。 我们最终将向您介绍使这项工作发挥作用的所有 Git 机制。 但是为了快速开始学习,我们创建了一些方便的工具,以便更轻松地完成我们的课程。 您将使用相同的工作流程来解决 Learn 上的每个...

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

    API:互联网是如何在幕后工作的?我们每天都通过使用笔记本和移动电话与朋友、家人以及同事沟通,那么程序之间是如何相互沟通的呢? API是我们这个现实生活中隐藏的“骨干”——让软件程序互相通信。而今天“API...

  • 如何选择正确的Node框架:Express,Koa还是Hapi?

    Node.js是10年前首次推出的,目前它已经成为世界上最大的开源项目,在GitHub上有+59,000颗星,下载次数超过10亿。流行度快速增长的部分原因是Node.js允许开发人员在应用程序的客户端和服务器端部分使用相同的语言:...

  • 零基础解读ChatGPT:对人类未来工作是威胁还是帮助?

    火到现在的ChatGPT到底是什么,它背后有哪些技术,对于我们的工作和生活会有啥影响,快来一起了解吧~

  • 揭秘成熟互联网团队:团队成员包括哪些岗位?

    开发阶段 在产品方案和设计阶段确定之后,开始进行开发工作。前端工程师根据UI/UX设计师的设计稿,实现产品的前端界面。后端工程师负责实现产品的后台功能,包括数据库设计、API设计、逻辑处理、服务器架构等。项目...

  • 面试官:什么是SSL卸载?它的工作原理是什么?有什么好处?

    一般而言,有关SSL/TLS和互联网的工作方式的一个用词不当的说法是,它是一个1:1的连接。个人的计算机直接与网络服务器连接,然后通讯就会直接从一端到达另一端。而实际上,情况要比这复杂得多,有时候两端之间最多...

  • 【综合篇】浏览器的工作原理:浏览器幕后揭秘

    web(给达达前端加星标,提升前端技能)了解浏览器是如何工作的,能够让你站在更高的角度去理解前端浏览器的发展历程的三大路线,第一是应用程序web化,第二是web应用移动化,第三是web操...

  • Elasticsearch:什么是大语言模型 (LLMs)?

    所以你决定在接下来的三年里每天都花时间阅读互联网上的所有内容。你很快就会意识到这比最初看起来更难,并且需要投入巨大的时间。你还意识到互联网上有大量的信息。其中一些是事实,一些是观点,而大多数则介于两者...

  • #422 编码人声:行业大会的幕后故事

    点击文末“阅读原文”即可报名RTE 2022 第八届实时互联网大会剪辑、音频/ 朱峰 卷圈编辑/ SandLiu 卷圈监制/ 姝琦文案 / 朱峰产品统筹/ bobo录音间/ 声湃轩联合制作 / 声网年底快要到了,按惯例我们会迎来很多行业...

  • 是什么让学习 Web 开发在未来几年变得有价值?

    Web 开发是指在互联网上创建网站或 Web 应用程序。它涉及一系列任务,从开发网站的整体结构和设计到...Web 开发人员可能在前端工作网站的一部分,这是用户与之交互的部分,或者在后端,这是处理网站幕后功能的部分。

  • 云之变4:想成为AIoT幕后老板的云

    大家可能会发现,在过去一段时间里,云计算、AI和物联网这三件事被同时提及的次数之多,可谓史无前例。可能大家已经认为这是某种套路,或者科技八股,厂商如果不同时念叨这哥仨就显...

  • 企业工商大数据API在互联网行业的应用

    商情分析 :使用关联关系发现、舆情分析等API接口,企业可 全面了解合作对象或投资标的的情况,穿透至幕后关系发现、企业族谱、投资族谱、不同事件舆情及分类展示。 风险管理 :使用企业监控、企业信用报告、舆情...

  • 三个原因导致API安全问题频发

    近年来,API作为在移动互联网时代中连接数据和应用的重要通道,承载着越来越复杂的应用程序逻辑和越来越多的敏感数据。正因如此,API也成为黑产的重点攻击目标,API遭受攻击的事件屡见不鲜并影响巨大。这也让企业...

  • 互联网程序员都每天刷题嘛-learn-workflow-ide-welcome-to-learn:学习-工作流程-ide-welcome-to

    在幕后存储和版本控制。 我们最终将向您介绍使这项工作发挥作用的所有 Git 机制。 但是为了快速开始学习,我们创建了一些方便的工具,以便更轻松地完成我们的课程。 您将使用相同的工作流程来解决 Learn 上的每个...

  • 互联网程序员都每天刷题嘛-learn-workflow-ide-welcome-000:学习工作流ide-welcome-000

    在幕后存储和版本控制。 我们最终将向您介绍使这项工作发挥作用的所有 Git 机制。 但是为了快速开始学习,我们创建了一些方便的工具,以便更轻松地完成我们的课程。 您将使用相同的工作流程来解决 Learn 上的每个...

  • 互联网程序员都每天刷题嘛-learn-workflow-ide-intro-to-learn:学习工作流程ide-intro-to-learn

    在幕后存储和版本控制。 我们最终将向您介绍使这项工作发挥作用的所有 Git 机制。 但是为了快速开始学习,我们创建了一些方便的工具,以便更轻松地完成我们的课程。 您将使用相同的工作流程来解决 Learn 上的每个...

  • 开源框架WebRTC终极指南:3大 API 详解

    什么是WebRTC? Web实时通信(WebRTC)既是一个开放源代码项目,也是一个行业标准和规范。它支持在浏览器和设备之间进行本地媒体实时传输,例如...两年后,经过大量工作,Chrome和Firefox之间建立了第一个跨浏览器视频

  • 面试环节:在浏览器输入 URL 回车之后发生了什么?(超详细版)

    在前面所有步骤没有缓存的情况下,本地 DNS 服务器会将请求转发到互联网上的根域,下面这个图很好的诠释了整个流程: 根域名服务器(维基百科) 需要注意的点 递归方式:一路查下去中间不返回,得到最终结果才返回...

  • Java毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zip

    Java毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zip本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 Java毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zipJava毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zipJava毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zipJava毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zipJava毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zipJava毕业设计-基于Springboot+Vue旅游网站设计-源码+数据库+使用文档+演示视频(高分项目).zip

  • Music-app-master.zip

    Music-app-master

Global site tag (gtag.js) - Google Analytics