译者:陈峻
本文简单回顾了API的发展历史,其基本概念、功能、相关协议、以及使用场景,重点讨论了与之相关的不同安全要素、威胁、认证方法、以及十二项优秀实践。
根据有记录的历史,随着Salesforce的销售自动化解决方案的推出,首个WebAPI在年底出现了。在那个时候,它是一种每个人都可以访问到的开放资源。Salesforce的自动化工具由XML驱动。而用于交换该工具信息的数据格式,后来被公认为SOAPAPI标准。它拥有与允许或禁止各种请求相关联的消息格式规范、以及特定于代码的规则。也就是说,大多数开发人员除了需要针对API的开发和创建进行必要的SOAP处理,也需要手动将XML文档与RPC协同使用。之后,开发人员还需要解释API的端点,并将SOAP套件发布到该端点处。这不仅是API的诞生,也算是SaaS概念的开始。
而塑造现代API的关键事件,离不开Flicker和FacebookAPI的推出。Flicker开发了一个通过云端存储数字图像的平台,该平台通过开发API,支持横跨不同平台的图像共享,并集成了各种照片共享设施的新型服务。
到了年,API进化成为可以独立操作,并能够处理大量互连的信息。Twilio通过推出一个API,可方便用户连接电话、短信等整个产品所需各个部分。
什么是API?
对于初学者来说,API是指为两个不同的应用之间实现流畅通信,而设计的应用程序编程接口。它通常被称为应用程序的“中间人”。由于我们需要保护用户的持有数据、以及应用本身的完整性,因此API的安全性是一种“刚需”。
而对于开发人员而言,API是一个非常好的工具。它可以在微服务和容器之间交换信息,并实现快节奏的通信交流。正如集成和互连对于应用开发的重要性那样,API在某种程度上,驱动并增强了应用程序的设计。
API风靡互联网
在互联网的早期,API作为专有协议,在网络中往往被用于受限的区域、目的或组织,让不同网络架构的通信与计算成为可能。当Web2.0出现后,基于Web的工具广泛涌现,人们开始使用REST(REpresentationalStateTransferFramework)这一社区开发规范,来构建实际应用的API接口,例如我们常见的OpenAPI。
在如今的Web3.0时代,API在IoT和AI驱动的设备之间的通信中,发挥着至关重要的作用。API的常规请求-响应范式也转变成为了事件驱动的方式。
API用例
API作为方便信息交换的基本元素,被广泛用于Web应用程序的开发领域。目前,业界最常使用且最为重要的API用例,有如下类型:
单页应用程序(SPA)
RESTAPI不但可以加速单页应用程序的开发,而且能够协助应用将所有内容放在一张页面上,以提供完整的用户体验。在应用的开发过程中,程序员可以使用预定义的CSS、JavaScript和HTML文件,来启动Web服务器间的通信。注意,REST框架通常被用于服务器端的通信,以及针对特定类型框架的客户端信息交换。
常被用于SPA开发的RESTAPI框架包括:NancyFx、Express.js和ASP.NetWebAPI。作为无状态的框架,RESTAPI不会受到客户端为每个请求去调用一到多个服务器的困扰。因此使用RESTAPI进行SPA开发,能够提高应用的可扩展性。显然,这不但减轻了开发者为扩展应用程序而付出的成本,并且消除了应用对于访问特定资源的需求。
在SPA开发中,除了RESTAPI文档之外,没有其他元素会被绑定到客户端和服务器上。因此,这种独立性促进了应用在开发、测试和部署环节的灵活性。而这恰恰是动态网页框架所无法达到的。
公共API、企业级的B2B
长期以来,电话、传真和电子邮件一直是B2B运营的主要通信手段。然而,为了满足基于物联网的信息交换的需求,RESTfulAPI可以在自动化的企业级B2B通信方面,发挥关键性的作用。
从客户的角度来看,发布公共API会使得企业能够创建面向消费者的应用程序,并且最大化与外界的通信交流效果。同时,由于公共API允许B2B客户端扩展各种基于用户的行为,因此它使得业务流程得以充分解耦,并在不增加成本负担的前提下,增强了基于机器(machine-based)的互操作性。
私有API与内部API服务
使用私有API,B2B客户可以缩短面市的时间,并在加速启用新的应用和工具的同时,不会对现有工作流程造成瓶颈。在管理内部工作流时,私有API可以为企业找出需要重组和现代化改造的可组合(