图片描述

API开放常见问题

每个开发人员在工作都会经常涉及各种API,基于这些API实现了形形色色丰富的功能。除了提供给内部其他服务使用的API,越来越多企业以API的方式将特有的数据或能力暴露出去,被其他公司或者最终用户调用,然后根据一定方式进行计费实现企业创收。很多企业在进行API开放时,往往定义了一个签名校验算法后就将API开放出去,并以为万事大吉了。但是经过一段时间却出现了很多意料之外的问题。例如:

  • API提供者无法清晰掌握每个调用方的使用情况。
  • 有些调用方的使用量有时会变得很大,影响API稳定性。
  • 开放的API和调用方逐渐增多,致使有哪些API在开放,谁能调用哪些API的管理变得比较混乱。
  • 有些调用方传参方式总是不对,导致开发同学在联调时花费大把时间。
  • 经常会有一些莫名其妙的流量尝试攻击。

以上的每一个问题都需要花不少时间来解决,搞得API开发的同学苦不堪言。但其实所有成熟公有云提供商都拥有API网关这款产品,且功能大同小异。而当我们在选择API网关的时候,第一位要考虑的就是稳定性、安全性和性能。接着还需要考虑所支持的功能的丰富度、使用的难易程度、使用状况及可观测性等。几乎所有的API网关产品都支持互联网后端地址,不需要一定要把服务部署到公有云上。你的服务可以仍然部署在你的私有云或者其他家公有云,将你的服务地址注册到你选好的云API网关上,用户从API网关作为入口访问你的服务即可,只用非常小的一次性研发投入和一些配置工作。
除了选择公有云服务,也有很多开源项目可供大家选择。从功能的完毕程度来看,Kong是个不错的选择(https://konghq.com/kong/)。如果对nginx+lua插件的方式比较不习惯,喜欢java开发的话则可以使用zuul(https://github.com/Netflix/zuul)或者spring cloud gateway(https://github.com/spring-clo...)来进行开发实现。
而下面我们将以京东云API网关为例,看看怎么利用这类产品对API的开放进行加速和各方面的强化。

API管理

清晰的API管理工具和流程能降低API的维护成本,提高开放效率。
京东云API网关以分组和API两级管理API。可以按分组的方式来管理权限,流量,版本,发布,SDK和文档等,同时又可以按API来定义具体的接口细节、后端配置、转换配置。
大部分API网关产品都支持版本和发布环境的概念,这些概念有助于更好的管理即将发布的API。京东云API网关的版本指API定义的变化历史,和git仓库一样,每一次的变化都基于一个已有的版本进行,并且可以针对一个具体的API版本来生成这个版本对应的SDK和文档,然后部署到某个发布环境。京东云API网关预设了测试、预发、线上三个发布环境,用于区分新版本的测试环境和供API调用者使用的生产环境。而要提供新的API,首先需要把API定义出来,再部署到测试环境。部署之后,可以通过API调试界面在页面进行简单调试,也可以下载SDK后编程实现。

权限管理

因为一般会有多个API开放给多个调用方,谁能调用哪些往往需要频繁调整,所以权限管理也是比较麻烦的一个工作。如果把权限相关配置放在API提供方的程序里,将非常不灵活,维护成本也会很高,但是利用API网关就可以实现API实现逻辑与API鉴权逻辑的分离。当鉴权逻辑主要交给API网关来进行后,API的实现就变得更加纯粹。
在鉴权方面,各家API网关产品支持的授权模式都不完全相同。目前,京东云API网关支持的授权模式有订阅密钥、API网关签名和京东云用户签名三种。订阅密钥的方式为在请求头传一个订阅密钥,不仅使用成本低,还能保证中等程度的安全性;签名密钥则会根据用户的AK/SK,利用京东云自定义的加密算法对数据进行传输校验,从而保证很高的准确性和安全性。由于API网关已经做了用户侧的验证,因此API提供方只需要验证其收到的请求是来自于API网关即可。关于验证的方式,国外的API网关产品较多使用客户端证书,而国内的API网关一般采用SecretKey签名的方式,京东云API网关也是采用后端签名的方式进行验证。
而在创建授权的时候,也可以配置访问授权、API分组及发布环境之间的任意绑定关系,使得一个调用者可以只调用某个分组,也可以调用多个分组,还可以限制其只能调用某个分组的线上环境,而测试和预发环境则只允许测试Key进行访问。

clipboard.png

流量管理

如果希望给调用者做授权,同时想要保证他按照我们期望的频次来调用。需要对已授权的调用操作进行流控限制时,只需要配置一条流控策略并绑定到对应的API分组上即可。这里配置了两个流控值,即API分组次数限制和单Access Key次数限制。API分组的次数限制用来保护API提供者的后端服务,这个值小于后端服务可支撑的上限即可;单Access Key次数限制用来限制单个API调用者,可以按需设置。

clipboard.png

监控和日志

当API被调用了以后,查看调用统计和日志就变得很重要了。在京东云的API网关中,能够看到请求量、失败量和响应时间等。此外,还可以看到API调用的具体日志,从而对API进行安全可控的管理。

clipboard.png

除了上述这些丰富的功能,API网关产品还支持各种便利开发过程的功能,例如Mock后端服务。需要开发新功能时,可以在API网关上配置API接口后使用Mock后端发布到测试环境,这样即使后端功能还未开发好,前端以及移动端的开发也可以使用Mock地址来进行开发和联调,大大提升了开发效率。
以京东云API网关为例,我们看到了如何使用API网关产品轻松地对API开放进行加速和强化,从而解决了企业在API开放过程中出现的一系列问题。选择一款合适的API网关产品,将能够带领用户在API经济热潮下快速找到正确的前进方向,为企业赋能,使企业更好的预见未来,拥抱未来!


点击"京东云"了解更多产品信息

图片描述

图片描述


京东云开发者
3.3k 声望5.4k 粉丝

京东云开发者(Developer of JD Technology)是京东云旗下为AI、云计算、IoT等相关领域开发者提供技术分享交流的平台。