API网关中的API版本控制方法、装置及存储介质制造方法及图纸

技术编号:27974701 阅读:18 留言:0更新日期:2021-04-06 14:08
本公开提供了一种API网关中的API版本控制方法、装置及存储介质,用于API版本控制中业务侵入、代码冗余的技术问题。本公开在API网关的组件架构基础上,通过新增版本控制组件,实现API版本与服务下的上游服务组件的绑定,能够根据客户端请中所携带的API版本参数将请求转发给指定API版本的上游服务组件进行处理,在服务端实现了不同版本的服务与对应的API版本的绑定,服务端不需要将不同版本的API混合在一个服务当中提供服务,从而减少业务的侵入、代码的冗余,实现了API版本的统一管理和控制。

【技术实现步骤摘要】
API网关中的API版本控制方法、装置及存储介质
本公开涉及互联网
,尤其涉及一种API网关中的API版本控制方法、装置及存储介质。
技术介绍
应用程序编程接口API是API提供者与API使用者之间建立的纽带。正常情况下,API版本不会轻易变动,一旦API提供者将API对外公开发布,就必须保持它是可用的并且不会影响到已有的使用者。如果是遇到多个项目,则需要对API进行版本控制,以防止影响到现有的API使用者。API的版本控制策略一般有以下3种模式:(1)TheKnot无版本模式,即API永远只有一个版本,所有的API使用者都必须使用最新的API,任何API的修改都会影响到API的已有使用者。(2)Point-to-Point点对点模式,即API自带版本号,API使用者根据自己的需求选择使用相应API版本。(3)CompatibleVersioning兼容版本控制模式,和TheKnot一样,API只有一个版本,但最新版本需要兼容以前的所有API版本。RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。在RESTfulAPI领域,版本管理目前有以下3中比较流行的方式:(1)URI方式,即直接在统一资源标识符(uniformresourceidentifier,URI)中标记使用的哪个版本,无版本号默认使用最新版本。例如:http://h3c-cloud/api/v1.0/users/1234(2)RequestParameter请求参数方式,即在每一个请求后添加一个version参数,表示请求的是哪个版本。例如:http://h3c-cloud/api/clusters/1234?version=3(3)Header方式,即在HTTP请求的header中使用MediaType或者自定义字段标记该请求想获取的资源,同样可以不设置或设置通用的MediaType表示最新的API版本。例如:version:v1.0或Accept:application/vnd.h3c.customer-v2+json以上的3种实现方式一般都是需要API提供者自己开发和维护,在同一个API里面可能需要维护多个版本的代码,且一般为全量代码,这样做会导致代码的冗余,项目的臃肿。上述API版本控制方式存在以下几方面的技术问题:业务侵入性强,API提供者在开发新的业务需求时,还需要考虑对旧版本API的兼容问题,当业务逻辑复杂,版本过多时,会给API提供者带来很多的额外工作量。造成代码冗余,为了避免多个版本的API之间互相影响的情况,不同版本的API即使逻辑大部分都一样,但还是得给每个版本的API提供单独的代码,导致了代码冗余,随着版本的增多,项目会变的越来越臃肿。管理繁重,在微服务的体系下,不同的模块的业务往往会被分为不同的微服务来实现,由不同团队的人员来维护,不同团队之间可能会有各自的API版本的标准,当一个微服务体系比较庞大时,维护不同微服务的API版本会变得十分困难。
技术实现思路
有鉴于此,本公开提供一种基于API网关的API版本控制方法、装置及存储介质,用于API版本控制中业务侵入、代码冗余的技术问题。图1为本公开一实施提供的一种API网关中的API版本控制方法的步骤图,该方法适用于采用RESTful开发方式的API版本的管理和控制,该方法包括:步骤101.指定服务的路由组件Route接收到客户端请求后,基于预设的匹配规则将请求转发给相应的服务组件Service:步骤102.服务组件Service接收到请求后,将请求转发给版本控制组件;服务组件是上层服务的抽象,路由组件Route和版本控制组件都创建于服务之下,例如服务svc1的路由组件接收到请求后,根据自身预设的匹配规则进行匹配,匹配成功后将请求转发给该服务对应的服务组件Service,服务组件Service可对请求做某些处理(例如修改路径等)后,将请求转发给所述指定服务下的版本控制组件。步骤103.版本控制组件接收到请求后,从请求中提取API版本参数,根据预配置的API版本与上游服务组件Upstream的对应关系表,将请求转发给与请求中API版本参数对应的上游服务组件Upstream;在本公开一实施例中,客户端发送的请求中,通过添加API版本参数来指示版本控制组件该请求所适配的API版本,例如在所述请求的HTTP请求头Header中携带用于指定API版本的API版本参数,版本控制组件通过请求头中携带的API版本参数将请求转发给与API版本参数相对应的上游服务组件Upstream。在本公开一实施例中,当请求中未携带用于指定API版本的API版本参数时,版本控制组件根据服务组件Service中预设的默认上游服务组件Upstream值,将请求转发给默认上游服务组件Upstream。步骤104.上游服务组件Upstream接收到请求后,根据负载均衡策略,将请求转发给下挂于该上游服务组件的某个目标组件Target。在本公开一实施例中,当请求中包括自定义参数时,版本控制组件根据预配置的上游服务组件Upstream与自定义规则列表的对应关系,进行请求中的自定义参数与所述自定规则列表中的匹配条件的匹配,将请求转发给与所述自定义规则列表相匹配的上游服务组件Upstream。图2为本公开一实施例提供的一种API网关中的API版本控制装置结构示意图,该装置中的各功能模块可以采用软件模块形式实现,也可以采用硬件单元方式实现。该装置的各模块的功能与本公开实施提供的方法中的各步骤具有对应关系。该装置中的各模块可以在一个硬件设备上执行,也可以由不同的硬件设备分别实施。该装置200包括:路由组件201,用于根据预设的匹配规则对请求进行匹配,将匹配的请求转发给相应的服务组件202;服务组件202,用于提供服务入口,在接收到请求后,将请求转发给版本控制组件203;版本控制组件203,用于实现指定服务下API版本与上游服务组件的绑定,在接收到请求后,从请求中提取API版本参数,根据预配置的API版本与上游服务组件204的对应关系表,将请求转发给与请求中API版本参数对应的上游服务组件;上游服务组件204,用于对客户端请求进行负载平衡,在接收到请求后,根据负载均衡策略将请求转发给下挂的目标组件205;目标组件205,用于标识后端服务实例,将请求转发给后端服务实例进行处理。进一步地,当请求中未携带用于指定API版本的API版本参数时,版本控制组件203根据服务组件202中预设的默认上游服务组件,将请求转发给默认上游服务组件204。进一步,在所述请求的HTTP请求头Header中携带用于指定API版本的API版本参数,版本控制组件203根据请求头中携带的API版本参数将请求转发给与API版本参数对应的上游服务组件204。进一本文档来自技高网
...

【技术保护点】
1.一种API网关中的API版本控制方法,其特征在于,该方法包括:/n指定服务的路由组件接收到客户端请求后,基于预设的匹配规则将请求转发给相应的服务组件;/n服务组件接收到请求后,将请求转发给版本控制组件;/n版本控制组件接收到请求后,从请求中提取API版本参数,根据预配置的API版本与上游服务组件的对应关系表,将请求转发给与请求中API版本参数对应的上游服务组件;/n上游服务组件接收到请求后,根据负载均衡策略将请求转发给下挂于该上游服务组件的某个目标组件。/n

【技术特征摘要】
1.一种API网关中的API版本控制方法,其特征在于,该方法包括:
指定服务的路由组件接收到客户端请求后,基于预设的匹配规则将请求转发给相应的服务组件;
服务组件接收到请求后,将请求转发给版本控制组件;
版本控制组件接收到请求后,从请求中提取API版本参数,根据预配置的API版本与上游服务组件的对应关系表,将请求转发给与请求中API版本参数对应的上游服务组件;
上游服务组件接收到请求后,根据负载均衡策略将请求转发给下挂于该上游服务组件的某个目标组件。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当请求中未携带用于指定API版本的API版本参数时,版本控制组件根据服务组件中预设的默认上游服务组件,将请求转发给默认上游服务组件。


3.根据权利要求1所述的方法,其特征在于,
在所述请求的HTTP请求头Header中携带用于指定API版本的API版本参数,版本控制组件根据请求头中携带的API版本参数将请求转发给与API版本参数对应的上游服务组件。


4.根据权利要求2或3所述的方法,其特征在于,
当请求中包括自定义参数时,版本控制组件根据预配置的上游服务组件与自定义规则列表的对应关系,进行请求中的自定义参数与所述自定规则列表中的匹配条件的匹配,将请求转发给与所述自定义规则列表相匹配的上游服务组件。


5.根据权利要求4所述的方法,其特征在于,
所述的API网关为Kong网关;
所述的自定义规则列表包括请求头Header对应的自定义规则列表和请求体Body对应的自定义规则列表。


6.一种API网关中的API...

【专利技术属性】
技术研发人员:熊宇豪张建伟鲍伟伟
申请(专利权)人:新华三云计算技术有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1