CN114416396A - 一种接口版本控制方法、装置、电子设备及存储介质 - Google Patents
一种接口版本控制方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114416396A CN114416396A CN202111645535.0A CN202111645535A CN114416396A CN 114416396 A CN114416396 A CN 114416396A CN 202111645535 A CN202111645535 A CN 202111645535A CN 114416396 A CN114416396 A CN 114416396A
- Authority
- CN
- China
- Prior art keywords
- interface
- data request
- version number
- version
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种接口版本控制方法、装置、电子设备及存储介质,该方法包括:接收第一数据请求;拦截所述第一数据请求,并从第一数据请求中获取第一接口版本号;确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类;根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。本发明可以提高代码的可维护性,而且通过接口版本的控制,提高了接口版本控制的灵活性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种接口版本控制方法、装置、电子设备及存储介质。
背景技术
目前,不论是WEB项目还是APP项目,都是分离开发,服务端提供接口,前端调用,由于业务线不断发展,业务端多或APP不断发版,服务端接口需要与业务端或APP匹配,所以服务端接口也在不断升级;这时需要做接口兼容和管理,即需要对服务端的接口版本进行控制,以便于使用与业务端或APP匹配的接口版本对所述业务端或APP的请求进行处理。
现有技术中,在对服务端的接口版本进行控制时,一般采用的是最简单直接的方式来处理的,就是在业务逻辑代码里根据版本号来做判断走不同接口版本的业务逻辑代码,这就会使用到较多的if条件来进行判断。
通过使用较多的if条件来判断不同接口版本的业务逻辑代码,导致大量的if条件等非业务逻辑代码侵入到服务端的业务逻辑代码里面,造成代码的可维护性较差,由于版本号写死在代码里面导致版本控制不灵活。
发明内容
本发明实施例提供一种接口版本控制方法、装置、电子设备及存储介质,可以避免重复代码,提高代码的可维护性,提高接口版本控制的灵活性。
第一方面,本发明实施例提供了一种接口版本控制方法,包括:
接收第一数据请求;
拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号;
确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类;
根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
第二方面,本发明实施例提供了一种接口版本控制装置,包括:
请求接收模块,用于接收第一数据请求;
接口版本号获取模块,用于拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号;
实现类获取模块,用于确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类;
数据处理模块,用于根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
第三方面,本发明实施例提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的接口版本控制方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的接口版本控制方法的步骤。
本发明实施例提供的接口版本控制方法、装置、电子设备及存储介质,通过拦截第一数据请求,从第一数据请求中获取第一接口版本号,确定与第一数据请求对应的通用接口方法,调用版本控制处理器,获取与第一接口版本号对应的第一接口对象,并从通用接口方法的方法属性中确定有版本控制标识的方法属性,将获取到的第一接口对象设置到有版本控制标识的方法属性上,得到与第一接口版本号对应的第一具体实现类,根据第一具体实现类,调用对应的第一接口处理方法对第一数据请求进行处理,得到第一响应数据,由于不需要在接口对象、接口处理方法等业务逻辑代码中使用if条件或其他控制代码来进行接口版本的控制,实现了接口版本的控制和接口对象、接口处理方法等业务逻辑代码的分离,避免了非业务代码的侵入,提高代码的可维护性,而且不需要将接口版本号写死在业务逻辑代码中,即可进行接口版本的控制,提高了接口版本控制的灵活性。
附图说明
图1是本发明实施例提供的一种接口版本控制方法的流程图;
图2是本发明实施例提供的另一种接口版本控制方法的流程图;
图3是本发明实施例提供的一种接口版本控制装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种接口版本控制方法的流程图,该接口版本控制方法可以由服务器等电子设备执行,如图1所示,该接口版本控制方法可以包括:
步骤101,接收第一数据请求。
可以通过统一接口接收对应于第一接口版本号的第一数据请求。所述统一接口是API(Application Programming Interface,应用程序编程接口),可以接收不同URL地址的数据请求,只要是发往当前服务器的数据请求即可接收。
步骤102,拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号。
在对第一数据请求进行处理之前,通过拦截器拦截第一数据请求,这样可以对第一数据请求进行接口版本的控制,通过拦截第一数据请求后来获取第一接口版本号,并在通用接口方法中进行具体接口版本的实例化,从而对第一数据请求进行处理,这样不必在业务逻辑代码里面使用if条件进行判断,使得对第一数据请求进行处理的通用接口方法以及具体的接口对象等业务逻辑代码和版本控制的非业务逻辑代码有效的分离开,并可以基于IOC和DI来实现接口版本控制。其中,接口版本控制是指使用与前端相匹配的接口处理方法(如第一接口处理方法或其它接口处理方法)来处理前端发送的数据请求(如第一数据请求或其它数据请求)。所述第一接口版本号是发送所述第一数据请求的前端应用程序所对应的版本号。
在拦截到第一数据请求后,可以对第一数据请求进行解析,获取第一数据请求中的请求头,并从请求头中获取第一接口版本号。
在本发明的一个实施例中,拦截所述第一数据请求,可以包括:若与所述第一数据请求对应的通用接口方法包括版本控制标识,则拦截所述第一数据请求。
若与所述第一数据请求对应的通用接口方法包括版本控制标识,则可以通过WebMVC框架或其它拦截器拦截所述第一数据请求。
其中,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。
本发明实施例可以在通用接口方法中使用版本控制标识来区分需要使用和不需要使用本发明实施例提供的接口版本控制方法来进行接口版本控制。数据请求的请求路径(即URL地址)决定了数据请求所对应的通用接口方法,从而在接收到第一数据请求时,基于该第一数据请求的请求路径(即URL地址)确定该第一数据请求所对应的通用接口方法。如果该通用接口方法包括版本控制标识,则通过WebMVC框架拦截第一数据请求,并进行后续的接口版本控制;如果该通用接口方法不包括版本控制标识,则确定该第一数据请求不需要使用本发明实施例提供的接口版本控制方法来进行接口版本控制,可以使用原有的接口版本控制方式进行控制。通过在通用接口方法中加入版本控制标识来区分使用不同的版本控制方法进行控制,可以使用多种版本控制方法进行控制,便于与之前接口版本控制方法的衔接。
步骤103,确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类。
其中,版本控制处理器是一个用于进行接口版本控制的处理器,可以对所有的接口进行版本控制,而且不区分接口进行控制。版本控制处理器参考了比较有名的开源框架spring的IOC(控制翻转)和DI(依赖注入)思想,把对象的创建权利交给了版本控制处理器,使用注解的方式动态的注入真正需要的对象即所述接口对象到有版本控制标识的方法属性中去,实现了可扩展性强代码可维护性强的程序。所述通用接口方法是一个统一的入口函数,是一个抽象类。所述版本控制标识可以是版本控制注解,是代码中的一种标识。
基于所述第一数据请求的请求路径确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与第一接口版本号对应的第一接口对象。在通用接口方法的方法属性中,有的方法是通用的,不需要进行版本控制,对于需要进行版本控制的方法所对应的方法属性,已经预先加入了版本控制标识,从而将获取到的第一接口对象设置到有版本控制标识的方法属性上,得到与第一接口版本号对应的第一具体实现类。在获取与第一接口版本号对应的第一接口对象时,可以使用反射的方式动态获取第一接口版本号对应的第一接口对象并设置到相应的方法属性中。其中,反射是在程序运行状态中对任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象都能够知道它的任意方法和属性,这种动态获取信息以及动态调用对象的方法的功能称为反射。
在本发明的一个实施例中,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,包括:调用版本控制处理器,获取与所述第一接口版本号直接对应的接口对象;若不存在与所述第一接口版本号直接对应的接口对象,则递归获取父类对象,直到获取到与所述第一接口版本号最接近的父类对象;将与所述第一接口版本号直接对应的第一接口对象作为与所述第一接口版本号对应的第一接口对象,或者,将与所述第一接口版本号最接近的父类对象作为与所述第一接口版本号对应的第一接口对象。
在Web端或者APP版本升级时,为了能够与升级后的Web端或者APP进行通信,服务器的接口一般也需要进行相应的升级,但是有时候服务器的接口可能与升级后的Web端或者APP也可以进行通信,这时服务器的接口就不需要进行升级,也就是服务器的接口版本不发生改变,如果接口版本不变就不需要添加新版本的接口对象等业务逻辑代码来处理新版本Web端或者APP的数据请求,即仍然可以使用之前版本的接口对象来处理新版本Web端或者APP的数据请求,所以,当前获取到第一接口版本号后,可以调用版本控制处理器,获取与第一接口版本号直接对应的接口对象,即查找与所述第一接口版本号直接对应的第一接口对象,如果服务器的接口和前端(如Web端或APP端)的版本同时进行了升级,则存在与第一接口版本号直接对应的接口对象,可以使用与第一接口版本号直接对应的接口对象来处理所述数据请求;如果前端版本进行了升级而服务器的接口未进行升级,则不存在与第一接口版本号直接对应的接口对象,可以向上递归依次获取父类对象,直到获取到与所述第一接口版本号最接近的父类对象,将与第一接口版本号最接近的父类对象作为与第一接口版本号对应的接口对象,用来处理所述第一数据请求。如果向上递归最终还是无法找到与第一接口版本号最接近的父类对象,就将基类对象作为与第一接口版本号对应的接口对象,来进行数据请求的处理。通过将第一接口版本号直接对应的接口对象或者将与第一接口版本号最接近的父类对象作为与第一接口版本号对应的第一接口对象,实现了在第一接口版本号对应的前端(如Web端或APP端)为升级后的版本时,如果服务器的接口同时升级了,可以直接获取到与所述第一接口版本号直接对应的第一接口对象,如果服务器的接口未与前端同时升级,可以向上递归获取父类对象,将与第一接口版本号最接近的父类对象作为与第一接口版本号对应的第一接口对象,也就是在服务器的接口未与前端同时升级时,不用重写父类对象的代码,只需要递归获取到最接近的父类对象就可以对第一数据请求进行处理,避免了代码重复。
在编写接口版本号对应的接口对象的代码时,可以继承和多态的方式进行编写,即使用的最新接口版本号的实现类(对象)继承上一个接口版本号的实现类。因为每个版本的接口功能变化并不大,大多数情况下新版本接口的代码和老版本接口代码有很多重复的地方,使用继承的方式会减少很多重复代码。其中,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
步骤104,根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
在得到第一具体实现类后,可以调用与该第一具体实现类对应的第一接口处理方法对第一数据请求进行处理,进而得到第一响应数据。
由于在获取到第一数据请求中的第一接口版本号时,基于版本控制处理器可以将与第一接口版本号对应的第一接口对象设置在需要进行接口版本控制的方法属性上,使得通用接口方法这个抽象类成为该第一接口版本号的第一具体实现类,而如果是其他的接口版本号同样可以将通用接口方法这个抽象类变成对应接口版本号的具体实现类,从而可以调用对应的接口处理方法来对数据请求进行处理,从而实现了对不同接口版本的控制。
在本发明的一个实施例中,根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据,包括:若存在与所述第一具体实现类直接对应的第一接口处理方法,则调用与所述第一具体实现类直接对应的第一接口处理方法,对所述第一数据请求进行处理,得到第一响应数据;若不存在所述第一具体实现类直接对应的第一接口处理方法,则调用所述第一具体实现类的父类方法,对所述第一数据请求进行处理,得到第一响应数据。
由于一个接口有多个功能,每个功能对应一种接口处理方法,而且一个接口处理方法还可以调用其他的接口处理方法,在通过一个接口进行数据处理时,有的功能可能进行了升级,即存在直接的接口处理方法,有的功能可能没有进行升级,就可以使用父类方法。在得到第一具体实现类后,如果存在与第一具体实现类直接对应的第一接口处理方法,说明该接口的接口处理方法进行了升级,这时可以直接调用与第一具体实现类直接对应的第一接口处理方法,来对第一数据请求进行处理,得到第一响应数据;如果不存在与第一具体实现类直接对应的第一接口处理方法,说明该接口的接口处理方法未进行升级,则可以调用所述第一具体实现类的父类方法,来对第一数据请求进行处理,得到第一响应数据。通过调用第一具体实现类直接对应的第一接口处理方法或者父类方法,在接口处理方法不发生改变时,可以不用编写与具体实现类直接对应的接口处理方法,而是直接使用父类方法,从而可以减少代码的重复,提高代码的可维护性。
在编写接口对应的代码(如接口处理方法等)时,接口可以编写为函数式接口,即使用函数式编程实现代码的可复用性。每个版本的接口发生的改变只有一点点,但是现有技术中要重写整个接口对应的代码来应对接口的变化,较为不便,本发明实施例使用函数式编程只需要将不同的那部分代码抽取出来整体抽象成一个参数传入到通用接口方法中,实现更高的代码复用性。
实现本发明实施例的接口版本控制方法的代码可以打包成为jar文件,作为一个接口版本控制组件,供不同的服务器使用。服务程序在使用该接口版本控制组件时,可以进行简单的配置,在引入jar包后给应用环境(applicationContext)赋值,在注入控制版本的服务接口属性(即上述的方法属性)上加上版本控制标识(如@Versioncontrol),在需要控制版本的接口添加版本控制标识(如@Versioncontrol),即在通用接口方法上添加版本控制标识,这样就可以使用该接口版本控制组件进行接口版本的控制处理。
本发明实施例使用反射动态获取进行接口版本控制时所需要的真实对象并设置到相应的通用接口方法的方法属性中,通过面向对象的原则,策略模式和责任链模式,函数式编程更好的实现接口代码的灵活性,借助spring容器管理bean的特点和WebMVC框架实现了对不同接口版本的控制。
本实施例提供的接口版本控制方法,通过拦截第一数据请求,从第一数据请求中获取第一接口版本号,确定与第一数据请求对应的通用接口方法,调用版本控制处理器,获取与第一接口版本号对应的第一接口对象,并从通用接口方法的方法属性中确定有版本控制标识的方法属性,将获取到的第一接口对象设置到有版本控制标识的方法属性上,得到与第一接口版本号对应的第一具体实现类,根据第一具体实现类,调用对应的第一接口处理方法对第一数据请求进行处理,得到第一响应数据,由于不需要在接口对象、接口处理方法等业务逻辑代码中使用if条件或其他控制代码来进行接口版本的控制,实现了接口版本的控制和接口对象、接口处理方法等业务逻辑代码的分离,避免了非业务代码的侵入,提高代码的可维护性,而且通过接口版本的控制,不需要将接口版本号写死在业务逻辑代码中,即可进行接口版本的控制,提高了接口版本控制的灵活性。
在上述技术方案的基础上,所述方法还包括:若所述第一数据请求中不存在第一接口版本号,则调用所述版本控制处理器获取基类对象,并将所述基类对象设置到所述有版本控制标识的方法属性上,得到基类具体实现类;根据所述基类具体实现类,调用对应的基类接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
在拦截到第一数据请求后,如果确定第一数据请求(如请求头)中不存在接口版本号,即第一数据请求可能不是经过与服务器的接口相匹配的前端发送的,则可以调用版本控制处理器获取基类对象,并将基类对象设置到有版本控制标识的方法属性上,得到基类具体实现类,调用基类具体实现类对应的基类接口处理方法对第一数据请求进行处理,得到第一响应数据。通过在第一数据请求中不存在第一接口版本号时,直接使用基类对象,避免了无法对不存在接口版本号的数据请求进行处理的问题。
图2是本发明实施例提供的另一种接口版本控制方法的流程图,该接口版本控制方法可以由服务器等电子设备执行,如图2所示,该接口版本控制方法可以包括:
步骤201,接收第一数据请求。
步骤202,拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号。
步骤203,确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类。
步骤204,根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
其中,步骤201-步骤204与上述实施例中的步骤101-步骤104的具体内容相同,具体可参见步骤101-步骤104这里不再赘述。
步骤205,接收第二数据请求。
可以通过上述统一接口接收对应于第二接口版本号的第二数据请求。
步骤206,拦截所述第二数据请求,并从所述第二数据请求中获取第二接口版本号,所述第二接口版本号与所述第一接口版本号不同。
第二数据请求与第一数据请求是对相同接口(如上述统一接口)的不同版本号的数据请求。
步骤207,通过所述通用接口方法调用所述版本控制处理器,获取与所述第二接口版本号对应的第二接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第二接口对象设置到所述有版本控制标识的方法属性上,得到与所述第二接口版本号对应的第二具体实现类。
第二数据请求与第一数据请求是基于相同接口接收到的不同版本号的数据请求,同一接口对应一个通用接口方法,所以可以直接调用与第一数据请求相同的通用接口方法。在对第二数据请求进行处理时,通过通用接口方法调用与处理第一数据请求相同的版本控制处理器,通过版本控制处理器获取第二接口版本号对应的第二具体实现类的方式与获取第一接口版本号对应的第一具体实现类的方式相同,这里不再赘述。
步骤208,根据所述第二具体实现类,调用对应的第二接口处理方法对所述第二数据请求进行处理,得到第二响应数据。
调用第二具体实现类对应的第二接口处理方法对第二数据请求进行处理的方式,与调用第一具体实现类对应的第一接口处理方法对第一数据请求进行处理的方式相同,这里不再赘述。
本实施例提供的接口版本控制方法,由于在获取到第一数据请求中的第一接口版本号时,基于版本控制处理器可以将与第一接口版本号对应的第一接口对象设置在需要进行接口版本控制的方法属性上,使得通用接口方法这个抽象类成为该第一接口版本号的第一具体实现类,而在获取到第二数据请求中的第二接口版本号时,同样可以基于版本控制处理器将与第二接口版本号对应的第二接口对象设置在需要进行接口版本控制的方法属性上,使得通用接口方法这个抽象类变成对应第二接口版本号的第二具体实现类,从而可以调用对应的第二接口处理方法来对第二数据请求进行处理,实现了对同一接口的不同接口版本的统一控制。
图3是本发明实施例提供的一种接口版本控制装置的结构框图,如图3所示,该接口版本控制装置包括:
请求接收模块301,用于接收第一数据请求;
接口版本号获取模块302,用于拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号;
实现类获取模块303,用于确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类;
数据处理模块304,用于根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
可选的,还包括:
基类实现类获取模块,用于若所述第一数据请求中不存在接口版本号,则调用所述版本控制处理器获取基类对象,并将所述基类对象设置到所述有版本控制标识的方法属性上,得到基类具体实现类;
基类数据处理模块,用于根据所述基类具体实现类,调用对应的基类接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
可选的,所述实现类获取模块包括:
直接对象获取单元,用于调用版本控制处理器,获取与所述第一接口版本号直接对应的接口对象;
父类对象获取单元,用于若不存在与所述第一接口版本号直接对应的接口对象,则递归获取父类对象,直到获取到与所述接口版本号最接近的父类对象;
对象确定单元,用于将与所述第一接口版本号直接对应的接口对象作为与所述第一接口版本号对应的第一接口对象,或者,将与所述第一接口版本号最接近的父类对象作为与所述第一接口版本号对应的第一接口对象。
可选的,所述接口版本号获取模块包括:
数据请求拦截单元,用于若与所述第一数据请求对应的通用接口方法包括版本控制标识,则拦截所述第一数据请求。
可选的,所述数据处理模块具体用于:
若存在与所述第一具体实现类直接对应的第一接口处理方法,则调用与所述第一具体实现类直接对应的第一接口处理方法,对所述第一数据请求进行处理,得到第一响应数据;
若不存在与所述第一具体实现类直接对应的第一接口处理方法,则调用所述第一具体实现类的父类方法,对所述第一数据请求进行处理,得到第一响应数据。
可选的,请求接收模块,还用于接收第二数据请求;
接口版本号获取模块,还用于拦截所述第二数据请求,并从所述第二数据请求中获取第二接口版本号,所述第二接口版本号与所述第一接口版本号不同;
实现类获取模块,还用于通过所述通用接口方法所述版本控制处理器,获取与所述第二接口版本号对应的第二接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第二接口对象设置到所述有版本控制标识的方法属性上,得到与所述第二接口版本号对应的第二具体实现类;
数据处理模块,还用于根据所述第二具体实现类,调用对应的第二接口处理方法对所述第二数据请求进行处理,得到第二响应数据。
本实施例提供的接口版本控制装置,通过拦截第一数据请求,从第一数据请求中获取第一接口版本号,确定与第一数据请求对应的通用接口方法,调用版本控制处理器,获取与第一接口版本号对应的第一接口对象,并从通用接口方法的方法属性中确定有版本控制标识的方法属性,将获取到的第一接口对象设置到有版本控制标识的方法属性上,得到与第一接口版本号对应的第一具体实现类,根据第一具体实现类,调用对应的第一接口处理方法对第一数据请求进行处理,得到第一响应数据,由于不需要在接口对象、接口处理方法等业务逻辑代码中使用if条件或其他控制代码来进行接口版本的控制,实现了接口版本的控制和接口对象、接口处理方法等业务逻辑代码的分离,避免了非业务代码的侵入,提高代码的可维护性,而且通过接口版本的控制,不需要将接口版本号写死在业务逻辑代码中,即可进行接口版本的控制,提高了接口版本控制的灵活性。
此外,可以基于版本控制处理器将与第二接口版本号对应的第二接口对象设置在需要进行接口版本控制的方法属性上,使得通用接口方法这个抽象类变成对应第二接口版本号的第二具体实现类,从而可以调用对应的第二接口处理方法来对第二数据请求进行处理,实现了对同一接口的不同接口版本的统一控制。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述接口版本控制方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述接口版本控制方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种接口版本控制方法,其特征在于,包括:
接收第一数据请求;
拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号;
确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类;
根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述第一数据请求中不存在所述第一接口版本号,则调用所述版本控制处理器获取基类对象,并将所述基类对象设置到所述有版本控制标识的方法属性上,得到基类具体实现类;
根据所述基类具体实现类,调用对应的基类接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
3.根据权利要求1所述的方法,其特征在于,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,包括:
调用版本控制处理器,获取与所述第一接口版本号直接对应的接口对象;
若不存在与所述第一接口版本号直接对应的接口对象,则递归获取父类对象,直到获取到与所述第一接口版本号最接近的父类对象;
将与所述第一接口版本号直接对应的接口对象作为与所述第一接口版本号对应的第一接口对象,或者,将与所述第一接口版本号最接近的父类对象作为与所述第一接口版本号对应的第一接口对象。
4.根据权利要求1所述的方法,其特征在于,拦截所述第一数据请求,包括:
若与所述第一数据请求对应的通用接口方法包括版本控制标识,则拦截所述第一数据请求。
5.根据权利要求1所述的方法,其特征在于,根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据,包括:
若存在与所述第一具体实现类直接对应的第一接口处理方法,则调用与所述第一具体实现类直接对应的第一接口处理方法,对所述第一数据请求进行处理,得到第一响应数据;
若不存在与所述第一具体实现类直接对应的第一接口处理方法,则调用所述第一具体实现类的父类方法,对所述第一数据请求进行处理,得到第一响应数据。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
接收第二数据请求;
拦截所述第二数据请求,并从所述第二数据请求中获取第二接口版本号,所述第二接口版本号与所述第一接口版本号不同;
通过所述通用接口方法调用所述版本控制处理器,获取与所述第二接口版本号对应的第二接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第二接口对象设置到所述有版本控制标识的方法属性上,得到与所述第二接口版本号对应的第二具体实现类;
根据所述第二具体实现类,调用对应的第二接口处理方法对所述第二数据请求进行处理,得到第二响应数据。
7.一种接口版本控制装置,其特征在于,包括:
请求接收模块,用于接收第一数据请求;
接口版本号获取模块,用于拦截所述第一数据请求,并从所述第一数据请求中获取第一接口版本号;
实现类获取模块,用于确定与所述第一数据请求对应的通用接口方法,调用版本控制处理器,获取与所述第一接口版本号对应的第一接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第一接口对象设置到所述有版本控制标识的方法属性上,得到与所述第一接口版本号对应的第一具体实现类;
数据处理模块,用于根据所述第一具体实现类,调用对应的第一接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
8.根据权利要求7所述的装置,其特征在于,还包括:
基类实现类获取模块,用于若所述第一数据请求中不存在所述第一接口版本号,则调用所述版本控制处理器获取基类对象,并将所述基类对象设置到所述有版本控制标识的方法属性上,得到基类具体实现类;
基类数据处理模块,用于根据所述基类具体实现类,调用对应的基类接口处理方法对所述第一数据请求进行处理,得到第一响应数据。
9.根据权利要求7所述的装置,其特征在于,所述实现类获取模块包括:
直接对象获取单元,用于调用版本控制处理器,获取与所述第一接口版本号直接对应的接口对象;
父类对象获取单元,用于若不存在与所述第一接口版本号直接对应的接口对象,则递归获取父类对象,直到获取到与所述第一接口版本号最接近的父类对象;
对象确定单元,用于将与所述第一接口版本号直接对应的接口对象作为与所述第一接口版本号对应的第一接口对象,或者,将与所述第一接口版本号最接近的父类对象作为与所述第一接口版本号对应的第一接口对象。
10.根据权利要求7所述的装置,其特征在于,所述接口版本号获取模块包括:
数据请求拦截单元,用于若与所述第一数据请求对应的通用接口方法包括版本控制标识,则拦截所述第一数据请求。
11.根据权利要求7所述的装置,其特征在于,所述数据处理模块具体用于:
若存在与所述第一具体实现类直接对应的第一接口处理方法,则调用与所述第一具体实现类直接对应的第一接口处理方法,对所述第一数据请求进行处理,得到第一响应数据;
若不存在与所述第一具体实现类直接对应的第一接口处理方法,则调用所述第一具体实现类的父类方法,对所述第一数据请求进行处理,得到第一响应数据。
12.根据权利要求7-11任一项所述的装置,其特征在于,
所述请求接收模块,还用于接收第二数据请求;
所述接口版本号获取模块,还用于拦截所述第二数据请求,并从所述第二数据请求中获取第二接口版本号,所述第二接口版本号与所述第一接口版本号不同;
所述实现类获取模块,还用于通过所述通用接口方法调用所述版本控制处理器,获取与所述第二接口版本号对应的第二接口对象,并从所述通用接口方法的方法属性中确定有版本控制标识的方法属性,将所述第二接口对象设置到所述有版本控制标识的方法属性上,得到与所述第二接口版本号对应的第二具体实现类;
所述数据处理模块,还用于根据所述第二具体实现类,调用对应的第二接口处理方法对所述第二数据请求进行处理,得到第二响应数据。
13.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的接口版本控制方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的接口版本控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111645535.0A CN114416396A (zh) | 2021-12-29 | 2021-12-29 | 一种接口版本控制方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111645535.0A CN114416396A (zh) | 2021-12-29 | 2021-12-29 | 一种接口版本控制方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416396A true CN114416396A (zh) | 2022-04-29 |
Family
ID=81269953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111645535.0A Pending CN114416396A (zh) | 2021-12-29 | 2021-12-29 | 一种接口版本控制方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416396A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270957A (zh) * | 2023-11-21 | 2023-12-22 | 北京名道恒通信息技术有限公司 | 一种接口版本控制方法、请求端及服务端 |
-
2021
- 2021-12-29 CN CN202111645535.0A patent/CN114416396A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270957A (zh) * | 2023-11-21 | 2023-12-22 | 北京名道恒通信息技术有限公司 | 一种接口版本控制方法、请求端及服务端 |
CN117270957B (zh) * | 2023-11-21 | 2024-03-08 | 北京名道恒通信息技术有限公司 | 一种接口版本控制方法、请求端及服务端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471653B (zh) | 应用程序的更新方法、电子设备、服务器和存储介质 | |
RU2339076C2 (ru) | Выполнение неверифицированных программ в операционной среде устройства радиосвязи | |
CN108491236A (zh) | 一种插件加载方法、装置及计算机可读存储介质 | |
CN103200219A (zh) | 数据包更新方法、装置、终端设备和服务器 | |
CN103150513A (zh) | 拦截应用程序中的植入信息的方法及装置 | |
CN105022832A (zh) | App应用程序安全下载的方法、移动终端及下载服务器 | |
CN111259462A (zh) | 终端的外设管控处理方法、装置、电子设备及存储介质 | |
CN111683114A (zh) | 一种设备程序的升级方法、装置、终端设备和存储介质 | |
CN114416396A (zh) | 一种接口版本控制方法、装置、电子设备及存储介质 | |
CN107277163B (zh) | 一种设备远程映射方法及装置 | |
JP6560824B2 (ja) | セキュアエレメント内のパッケージを管理する方法 | |
CN111142885B (zh) | 一种eSIM设备管理方法、装置、设备及存储介质 | |
CN105744511A (zh) | 安卓系统适配模块动态更新方法、客户端及服务器 | |
CN111654398B (zh) | 一种更新配置的方法、装置、计算机设备及可读存储介质 | |
CN111638896B (zh) | 升级方法、升级装置、存储介质、处理器和移动终端 | |
CN112579129A (zh) | 基于服务器的软件更新方法、装置、设备及存储介质 | |
CN113791795A (zh) | 插件的安装方法、装置、系统、设备及存储介质 | |
CN115004667A (zh) | 信息推送方法、装置、电子设备及计算机可读介质 | |
CN112181487A (zh) | 软件兼容性处理方法、装置、电子设备及存储介质 | |
EP2645293A2 (en) | Method and apparatus for controlling operations performed by a mobile computing device | |
EP3499931A1 (en) | Method for managing profiles of a smart card used in mobile devices | |
CN111512612A (zh) | 用于远程管理连接到住宅网关的设备的方法 | |
US20220278895A1 (en) | Network resource access intermediary system based on resource plug-ins and processing method therefor | |
CN111338653B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN108829412B (zh) | 应用更新方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |