说到API,大家可能多多少少都听过,但是真的要让你解释,可能你就会一脸懵逼的说:纳尼!???
先来看下度娘对于API的定义:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
看完这个解释,我很理解你现在脸上的表情,其实还是一脸懵逼,哈哈哈哈哈哈。
下面就让我们用大白话来解释下什么是API:
想象一下,你正在经营一家银行。
银行里有一个非常强大的保险库来存钱,还有一本记录客人金钱数量的书。有一种非常简单的方式来操作这个银行:开放访问每个访问者,没有人检查访问者的身份,而且银行认为人们会做正确的事情。
在这个开放式银行中,客户希望省钱,需要完成的步骤如下:
1:把钱带到银行;
2:打开金库,把钱放在中间;
3:在分类账上写下记录:我是xxx,我已经存了xxx钱;
4:离开银行。
显然,这种方法存在两个问题:
1:保险库的门很难打开,需要一定的体力。对弱势群体不太友好,这可能违反一些健康和安全法规。同样,如果有人受伤或眼睛不清楚,他们就无法在分类帐上阅读或书写。
2:在这种方法中,银行认为人们是绝对诚实的。显然,现实中总有一些不诚实的人。如果有人保存100,那么在分类帐上写入10000个块。你在两天内破产了。
因此,我们需要进一步设计一个流程来更好地管理银行。
请一个出纳
由于我们完全放任自流,无论上述问题如何,我们都可以考虑聘请一位聪明而有实力的人来处理所有的金库访问,因此我们聘请了小丽出纳员来做这项工作。现在,我们管理银行的方式有所改善:小丽就像一堵墙,将金库和分类帐与客户分开。客人无法直接在分类帐或金库中操作。如果他们想存钱,他们必须要经过小丽。
现在客户想再次存钱,所需的步骤更复杂:
1:把钱带到银行;
2:告诉出纳小丽,我是xxx,我需要向我的账户存入xxx这么多钱;
3:小丽把你存入保险箱的钱存入。她非常强壮,很容易做到这一点;
4:小丽在分类账上写下了这条记录:xxx为xxx节省了这么多钱;
5:小丽回到柜台,告诉客人她可以离开。
6:客人离开银行;
现在,整个流程对于客人来说没有任何障碍。而小丽也是我们信任的人,因此上面存在的第二个问题风险也小多了。
现在,我们可以介绍API的概念。API被称为应用程序编程接口,它是软件系统不同部分的约定。简而言之,API允许您轻松地与其他软件进行通信,这是非常重要的。
在我们的比喻中,银行开了一个非常困难的保险库门。如果我们让银行出纳员开门,顾客就不必去开门,顾客会节省时间,银行也会更安全。同样,我们抽象的操作细节,如分配系统内存,这将有助于减少程序员的认知负荷,从而提高生产力。例如,如果我们制造了一个发射火箭到太空的API,程序员可以使用API,眨眼间,引擎就会被点燃,火箭就会直射天空。因为实现细节被抽象(隐藏在API后面),我们的程序员可以在不知道火箭科学的情况下将火箭送入太空。
有了这个总结,还有一个好处:组件可以交换和替换,只要它们遵循相同的协议。银行不需要知道客户是如何到达银行的,客户也不需要知道银行把所有的钱都转移到了避税天堂。只要银行出纳员在那里,知道如何取款,整个交易将继续下去。
API无处不在:从操作系统中的简单fork()到复杂的API(如谷歌地图API),它们都是为了使程序员更容易。
再通俗一点讲,API就是不同软件之间沟通的桥梁。例如你在美团上点了一份外卖,这个时候你需要使用支付宝进行付款,这是两个不同的软件,按道理来说是不能直接相互进入对方软件内部,获取相关数据的。但是有了API这个桥梁,支付宝就可以给美团开了一个小门,进入一个有限的小房间,美团可以直接通过这个小房间使用支付宝已经放在这个房间内部的付款功能,而且不会看到其他更多的信息,这个就是API桥梁的意义所在。
现在,你应该清楚什么是API了吧。