随着互联网通信技术的进一步发展,每个设备之间都能够进行互相之间的通讯,API在很大程度上充当了他们相互交谈之间的翻译供工具。世界上的所有互联网服务都是通过API来为用户提供的,重要程度可想一般。
那么什么是API?
从技术的角度来说,API指的是应用程序编程接口,企业通过它向外部客户和内部人员提供服务,简单来说,它是一种为客户提供服务的方式。
既然API是向外部提供服务,那么API即会与外界产生交互,而公开的某些功能也会暴露给拎一个要使用的程序。这个时候公司对于内部API的管理就需要注意以下这些基础的要点了:
企业通过互联网公开的服务应该是安全可靠的;
企业提供的服务应该是有详尽的文档进行记录的;
企业应该配置一个代理网关,并通过创建SLA和策略来对API的请求数量进行管理;
所有的使用者可以通过API来调用服务,且调用前应该进行安全性验证;
对所有的调用请求做分析和统计,并对其中的商业价值做进一步提炼;
进一步提高企业API服务的可用性,并时刻保证服务的稳定性;
那么针对这些需求,我们应该如何去进行管理呢?你应该使用API管理工具去实现!这些工具有的是本地部署使用的,有些是线上的SaaS服务,有些是两者的结合,总之,API管理工具为企业提供了一种更为成熟和灵活的API管理方式。
有哪些API管理工具可用?
目前市面上有许多API管理供应商可供大家选择。
国内外各种产品:
l IBM-ESB(企业总线服务);
l Microsoft-AZURE API
l EOLINKER-API Studio
l Apigee;
l 阿里-RAP
l 网易-NEI
没列出来的还有非常多,从国内的到国外的,从开源的到商业化服务的,从线上的到线下部署的各种各样,总有一款会符合大家的需求
我可以与其他开发人员共享API信息吗?
当然。大多数工具都支持开放的API规范,如RAML,Swagger,WADL(Web应用程序描述语言)和WSDL(Web服务描述语言)。AZURE API管理支持除RAML之外的所有上述指定格式。RAML由MuleSoft支持,也是许多供应商创建API的广泛接受的规范。
RAML将在本文中进行更多讨论。开放规范语言是一种规范,可以在实际服务实现之前提供给开发人员,并且一旦部署服务就可以提供给外部世界。
RAML代表RESTful API建模语言,用于描述RESTful API。目前,正在使用两个版本的RAML:0.8和1.0。大多数工具支持0.8,只有少数支持1.0。
注意: RESTful API已成为术语API的同义词,因为它们使用现有HTTP支持的方法(如GET,PUT,POST,DELETE)的功能,并且是轻量级的。在JSON的支持下,转换不需要请求和响应,因为所有JavaScript框架都可以轻松理解它们。
为了创建RAML文件,MuleSoft提供了一个IDE。MuleSoft提供了一个名为API Workbench的软件包,可以添加为名为Atom的免费软件工具的扩展。此扩展具有非常好的功能集,用于创建用于设计RAML文件的资源类型,特征,类型和其他组件。
什么是API的例子?
在不同的应用程序中使用的大多数API是:
百度地图
高德地图
蚂蚁金服开放平台
微信开放平台
微博开放平台
……
无论是私人企业还是政府部门,API也是无处不在,例如Google Maps API可用于将Google Map嵌入到网页中,移动应用程序可以将其与桌面应用程序一起使用;同样,中国气象数据网和其他政府机构也提供类似的面向公众的API。
而当您开始留意不同企业或者机构提供的API时,你将会看到现今提供的网络服务都离不开API的身影。
我们举个非常简单的AP,例如Account API,其内容和操作如下方所示(如果大家有兴趣,可以前往EOLINKER注册账号查看我们的示例项目):
以上操作可大致翻译如下:
您的服务网址: https ://www.eolinker.com/accountsservice。
获取帐户: https :// www.eolinker.com /accountsservice/api/accounts - HTTP获取操作。
使用请求正文创建帐户:https :// www.eolinker.com /accountsservice/api/accounts - HTTP POST OPERATION。
按帐户ID获取帐户: https :// www.eolinker.com /accountsservice/api/accounts/{ id } - HTTP获取操作。
按ID删除帐户:https :// www.eolinker.com /accountsservice/api/accounts/{ id } - HTTP删除操作。
按ID更新帐户: https :// www.eolinker.com /accountsservice/api/accounts/{ id },带有请求正文 - HTTP PUT。
API管理的目的是什么?
从大部分人的认知出发,一般对API进行管理目的基本可以归类为以下几点:
按照EOLINKER对于API管理的定义,我们将其目的归类为以下四个大点共计17个小点,和大家分享:
(提升工程质量)通过API管理提升工程质量
• 通过API测试对API进行快速测试
• 通过API用例测试对单一API进行全面测试
• 通过自动化测试对业务流程进行全面测试
• 通过定时测试将测试纳入持续集成范畴,提升团队敏捷度
• 通过Open API以及Webhook对接第三方系统,打造全生命周期API管理系统
(降低风险)通过API管理将零散的API资产集中化、云端化管理
• 所有的API文档、状态码文档、设计需求文档等均统一管理,将抽象的代码具象为可以快速查询和维护的文档资源;
• 为不同的成员设置不同的权限,并且记录所有成员的操作数据,让研发管理更规范;
• 通过自动化测试对业务流程进行全面测试;
• 数字资产统一管理后,能够最大限度降低人员流失带来的项目维护成本增加的问题。让任何一个人都可以根据详尽的文档接手研发与测试工作;
• 项目数据支持对外开放分享,可以用做OpenAPI开放平台,数据实时更新,降低维护多套文档的成本;
(促进协作)通过API管理联动研发与测试团队通过API测试对API进行快速测试
• 后端开发人员:系统自动通过代码注解生成API文档,将代码与API实现绑定。提供强大的API测试功能、版本管理功能,帮助后端将API管理规范化;
• 前端开发人员:系统提供详尽的API文档、自动生成Mock API、提供快速API测试、自动生成SDK代码以及调用语句。将前后端的开发工作通过API关联;
• 测试人员:针对每个API或者流程创建测试用例以及自动化测试,将API文档与测试流程绑定。将测试与研发绑定,提高测试效率与项目质量,提升研发与测试团队的沟通效率;
(方便管理)通过API管理管控项目进度,将API管理实在地与研发管理结合,帮助管理者全方位把控项目进度与质量。
• 了解所有API的状态;
• 制定迭代计划并实时跟踪进度;
• 了解API质量情况;
• 了解团队工作贡献度;
Microsoft的AZURE API管理和MuleSoft的Anypoint Platform for API有两个共同特征:
1. API网关服务。
2. 开发者门户。
Publisher Portal是AZURE API管理中可用的不同功能或页面,而在Anypoint Platform中,管理员将使用API管理发布门户,类似于Publisher Portal。您可以为API定义SLA,限制和其他策略。
我们通常可以为API管理提供以下图表:
在图1中,如果我们观察到有三类消费者:开发者,应用程序或消费者,以及管理员或发布者。
开发商
上图中提到的开发人员是注册API访问权限并通过Developer Portal使用API的任何外部开发人员。他们是喜欢探索API的兴趣方,可以成为具有适当许可的未来消费者。
应用程序和消费者
上图中的应用程序指的是使用API执行特定功能的移动应用程序,桌面和平板电脑应用程序。想象一下我们去沃尔玛购买电视的最常见情况。当我们扫描信用卡时,它可能会向Visa或万事达卡或任何其他信用卡服务发送请求并验证我们的信息,并根据实际服务的响应,交易将被批准。同样,对于我们所做的所有在线交易,我们将使用API来执行操作。
出版商和管理员
发布者和管理员是将API发布到外部世界的人。他们可以是开发API的内部开发人员,也可以是获取API信息并帮助发布API或两者组合的专门指定人员。
在图中,我们还观察到消费者和实际服务中间有三个组件:Developer Portal,Gateway / Proxy和Publisher Portal。
门户网站是一组网页,旨在满足特定功能。
发布商门户
发布者或管理员发布API,与API相关的文档以及通过Publisher Portal使用API所需的其他来源。此外,Publisher Portal是定义和控制API特定安全配置,访问和其他限制的位置。
此外,API的限制是通过定义诸如免费套餐之类的层来提供的,外部开发人员可以注册和使用API,但有一些限制,例如一分钟内有五个请求,每天有100个请求。还有一个高级层,其中应用程序可以每分钟生成500个请求,每天生成100个请求,以及应用程序可以无限制调用的无限层。这些都是在Publisher Portal中通过将API与定义的不同层链接起来定义的。
此外,可以通过链接API对组的访问权限以及对提供给电子邮件用户的订阅或访问进行批准来对访问进行限制。
开发者门户
一旦发布者发布了API,外部开发人员就可以通过Developer Portal访问它们。Developer Portal提供对API和支持的操作的访问,以及使用API的指令,如请求和响应示例以及有关限制的详细信息。有些供应商提供免费注册API,有些供应商在使用之前需要注册。此外,在注册时,将向每个订户提供订户密钥和密码或一组主要和次要密钥和密码对或客户端ID和密码。术语基本上因供应商而异,但概念保持不变。
网关/代理服务器
应用程序可以直接使用实际服务,也可以根据服务的部署方式通过网关或代理层使用。某些供应商在实际服务之前隐式地提供网关服务作为层并隐藏实际服务。例如,Microsoft API管理隐式提供Gateway端点并隐藏实际服务。所有消费应用程序都通过Gateway端点使用服务。Anypoint Platform提供部署Gateway端点的选项; 否则,Developer Portal会直接访问实际端点。Anypoint Platform提供了通过CloudHub部署服务或网关的选项。CloudHub是一种集成平台即服务(iPaaS)。网关应用程序隐藏或代理后端服务,并保护实际端点免受消费应用程序的攻击。