银行里有一个非常坚固的金库来省钱,还有一本书记录了客人的钱数。有一种非常简单的银行经营方式:对每个访客开放访问,没有人检查访客的身份,银行认为人们会做正确的事。在这个开放的银行中,客户想省钱,需要完成的步骤如下:1:将钱带到银行; 2。 2:打开金库,将钱放在中间; 3:在总账上写一个记录:我是xxx,我已存入xxx钱; 4:离开银行显然,此方法有两个问题:1:保险库的门很难打开,需要一定的体力。对弱势群体不是很友好,这可能违反某些健康和安全法规。同样,如果有人受伤或眼睛不清楚,他们将无法在分类帐上读写。 2:通过这种方法,银行认为人们是绝对诚实的。显然,现实中总会有一些不诚实的人。如果有人存了100,请在分类帐上写一个区块。您在两天内破产。因此,我们需要进一步设计流程以更好地管理银行。由于我们完全放手,不管上述问题如何,我们可以考虑雇用一个聪明又有能力的人来处理所有保管库访问,因此我们聘请了小李出纳员来完成此工作。现在,我们管理银行的方式得到了改善:小丽就像一堵墙,将金库和分类帐与客户分开。访客不能直接在分类帐或金库中操作。如果他们想存钱,就必须通过小礼。现在,客户希望再次存钱,所需的步骤更加复杂:1:将钱存入银行; 2。 2:告诉柜员小莉,我是xxx,我需要在我的xxx帐户中存入这么多钱; 3:小李将您的钱存入保险箱。她非常坚强,可以轻松做到这一点; 4:小李在总账上写了这个记录:xxx为xxx节省了很多钱; 5:小丽回到柜台,告诉客人她可以离开。 6:客人离开银行;现在,整个过程对客人没有任何障碍。小莉也是我们信任的人,因此上述第二个问题的风险也要小得多。现在,我们可以介绍API的概念。该API称为应用程序编程接口,它是软件系统不同部分的约定。简而言之,API使您可以轻松地与其他软件进行通信,这非常重要。打个比方,如果我们让银行柜员开门,客户不必开门,客户将节省时间,银行将变得更安全。同样,我们的抽象操作细节,例如分配系统内存,将有助于减轻程序员的认知负担,从而提高生产率。例如,如果我们制作了一个将火箭发射到太空的API,那么程序员可以使用该API。眨眼间,发动机将被点燃,火箭将直接射向天空。因为实现细节是抽象的(隐藏在API之后),所以我们的程序员可以在不了解火箭科学的情况下将火箭送入太空。有了这个摘要,还有另一个好处:只要遵循相同的协议,就可以交换和替换组件。银行不需要知道客户如何到达银行,客户也不需要知道银行已经将所有资金转移到避税天堂。只要银行出纳员在那里并且知道如何取款,整个交易将继续进行。 API无处不在:从操作系统中的简单fork()到复杂的API(例如Google Maps API),它们的设计都是为了使程序员更轻松。您可能已经注意到,银行有两个部分:前台区域,有序的客户队列;后面的区域,处理货币。在柜台中间,前后区域是隔离的。交互只能在中间柜台(销售员小李)的窗口中进行。用API术语来说,我们城市的中间区域是Interface;这是软件组件交互的地方。在我们银行,前台和后台都知道这个地方的存在,他们都同意在这里交换信息。现在,假设小王来取钱了。但是小王喝得太多了。他问收银员小莉:“为什么本赛季库里的两分命中率提高到59%?”小李是银行出纳员,根本不看篮球,只有一张脸。用API术语来说,协议是一组定义组件之间如何交互的规则。双方必须理解并遵守相同的沟通协议才能成功。在这种情况下,银行出纳员了解提款和存款,但她不了解篮球。小李和小王用普通话交流,我们称之为格式:它指定了如何编码要相互发送的数据。换句话说,这里的交流方式是普通话。像协议一样,双方都必须理解并遵守这一协议,但是由于小莉不理解,因此信息交换失败。在现实世界中,Web API的常见格式包括XML和JSON,尽管JSON非常流行,XML在Java世界中仍然占有重要地位,尤其是在企业级别(例如,用于SOAP中的对话的API)。对于需要交换大量数据的应用程序(尤其是多人游戏),通常使用ProtoBuf和MsgPack等二进制协议来节省空间并提高编码/解码的效率。最后,我们假设我们也想将业务扩展到股票市场。我们需要专门的银行柜员来处理股票交易。我们称这个新股票交易员为小刘。用API术语来说,API端点通常是指在同一接口中提供特定功能子集的服务提供商。在这种情况下,小刘和小李都是端点。不同的端点可以具有不同的协议和不同的格式。总而言之,界面是不同软件组件交互的地方。协议是定义它们如何交互的一组规则,以及定义它们如何相互通信的格式。端点在同一接口中提供不同的功能。介绍API的基本概念。现在让我们谈谈API的其他功能。小王再次来取钱,说他要取钱。收银员会在取钱之前先检查他的帐户是否有美元。 API可以包含验证逻辑,以确保所有操作都是合法的。但是,小王的帐户只有100美元。我们可以请银行柜员告诉他,他的资金不足。 API可以使用错误报告机制来指示发生了错误。小王认为这一定是一个错误,他要求银行出纳员以他的名义提供所有帐户文件,以及每个帐户有多少钱。原来,小王有200个帐户。一次只给他一个帐户是不切实际的,所以柜员小李一次要显示10个帐户。小王看完10个节目后,可以继续观看下一个10个节目。这称为页面调度和页面调度数据集,它可以节省带宽和服务器资源,因为您不需要立即获取数据集中的所有内容。如果小王只想知道帐户的余额,而不想知道帐户有多少积分,他可以要求小李只显示余额。这称为过滤,它有助于节省带宽和资源,并且更易于浏览。小王检查完所有帐户后,发现自己没有美元。但是他知道小赵买了股票并赚了很多钱,所以他离开银行,假扮成小赵,然后又回到银行,他告诉出纳员小李:“我是小赵,“我们要求小李在取款前验证客户的身份和银行卡。在这种情况下,小王没有此类证据,只能离开银行。API中可以内置授权和访问控制,以确保只有授权人员才能查阅具体数据,最后,小王没能提取1万美元,便急忙回到银行,每次只能收回0。01美元(可能是对小李的报复),如果小李这样做,她会花时间和精力。我们可以指定币种的频率,例如,您只能在10分钟内提款一次,如果小王真的想每次去0。01美元,他将在银行呆一段时间。可以通过速度限制来控制资源分配,以确保用户不会滥用服务。API和上述功能的组合可以充当防火墙,防止资源被滥用,并允许合法请求。对API的系统了解?实际上,不仅仅是银行可以通过API来实现它,某些必需的功能(例如三大运营商,电子商务网站,第三方支付平台,移动应用,充值支付平台等)可以改善应用程序通过API实现功能,尤其是由第三方开发的API接口,这些功能通常具有更强大,更稳定且更适合公司使用的功能。交通银行,北部湾银行,三大运营商,小米等已利用赛黑数据开发的充值和支付API接口,水电和煤电支付API通过接口等进行产业转型和升级,与赛黑数据达成了合作。