一种新型REST查询接口的实现方法技术

技术编号:39240280 阅读:12 留言:0更新日期:2023-10-30 11:52
本发明专利技术提供了一种新型REST查询接口的实现方法,包括以下步骤:定义统一的接口查询入口MainController,将请求报文数据做固定格式封装,作为统一请求接口的body传参,后台程序根据body内的service参数来获取要调用的业务名称;根据service参数来获取具体的业务bean实例,利用动态代理调用各自的业务方法执行各自的详细业务逻辑;补充完善接口的全局功能。本发明专利技术有益效果:单一接口能够支持多种业务能力,能够将查询接口统一封装,无需开发额外接口;前端能够动态控制接口返回字段,并支持内嵌对象字段动态返回,后端无需再关心接口返回字段,可以全部返回由前端做取舍。可以全部返回由前端做取舍。可以全部返回由前端做取舍。

【技术实现步骤摘要】
一种新型REST查询接口的实现方法


[0001]本专利技术属于信息
,尤其是涉及一种新型REST查询接口的实现方法。

技术介绍

[0002]在一个RESTful架构下,由于后端人员根据业务需求在定义每个接口URL资源上返回的数据,而不是前端开发人员来提出数据需求,这就使得按需获取数据会非常困难,往往在一个请求资源中获取信息时会过度获取,会返回一些前端并不需要的数据,这时可能就需要开放出多个冗余接口才能满足需求,付出更多代价,同时在一些接口请求路径限制要求严格的场景中,往往只允许对外开放少许接口获取资源,这就需要单个接口具备能够同时满足处理多种业务需求的能力。

技术实现思路

[0003]有鉴于此,本专利技术旨在提出一种新型REST查询接口的实现方法,让业务编写的控制权回到了应有的地方,由API接口的开发者来确定哪些接口行为是被允许的,由API接口的使用者在运行时动态指明需要什么数据,并支持一个接口同时调用多个业务获取数据,支持自定义获取所需数据和自定义获取嵌套对象的部分数据。
[0004]为达到上述目的,本专利技术的技术方案是这样实现的:
[0005]一种新型REST查询接口的实现方法,包括以下步骤:
[0006]S1、定义统一的接口查询入口MainController,将请求报文数据做固定格式封装,作为统一请求接口的body传参,后台程序根据body内的service参数来获取要调用的业务名称;
[0007]S2、根据service参数来获取具体的业务bean实例,利用动态代理调用各自的业务方法执行各自的详细业务逻辑;
[0008]S3、补充完善接口的全局功能;
[0009]S4、在接口处理完返回结果时根据body内params传参来动态返回需要的结果字段,基于Byte Buddy实现在程序运行时动态修改字节码,在需要返回的字段上动态生成JsonFilter注解,定义统一的SpringMVC Advice来实现返回字段的过滤,同时支持内嵌对象字段的动态返回;
[0010]S5、根据接口传参来调用不同业务,动态控制返回字段,同时支持内嵌对象动态返回字段,根据fields参数来动态控制返回结果。
[0011]进一步的,在步骤S3中,补充完善接口的全局功能包括添加参数校验拦截Validator、添加token权限验证、利用AOP添加接口监控信息。
[0012]进一步的,在步骤S1中,具体包括:
[0013]A1、创建一个名为MainController的控制器类,定义一个统一的接口查询入口;
[0014]A2、先从body中获取service参数,service参数为字符串,表示要调用的业务名称。
[0015]进一步的,在步骤S2中,具体包括:
[0016]B1、在MainController类中,使用ApplicationContext类的getBean()方法,传入从body中获取的service参数,来获取对应的业务bean实例;
[0017]B2、使用Java的动态代理技术,创建这个业务bean的代理实例,然后调用代理实例的相应方法来执行业务逻辑。
[0018]进一步的,在步骤S3中,具体包括:
[0019]C1、在MainController类中,可以添加一些全局的功能;
[0020]C2、使用Spring的AOP技术,来定义一些全局的切面,例如定义一个方法级别的切面,来在每个方法执行前后添加日志记录。
[0021]进一步的,在步骤S4中,具体包括:
[0022]D1、在业务方法执行完后,从body中获取params参数,这个参数应该是一个Map,表示要返回的结果字段;
[0023]D2、使用Byte Buddy库,来动态修改返回结果对象的字节码,为需要返回的字段动态添加JsonFilter注解;
[0024]D3、定义一个SpringMVC的Advice类,使用@JsonFilter注解,来根据JsonFilter的设置过滤返回字段。
[0025]进一步的,在步骤S5中,具体包括:
[0026]E1、在MainController类的handleRequest方法中,从body中获取fields参数,fields参数为List,表示要返回的结果字段;
[0027]E2、使用Byte Buddy库,来动态修改返回结果对象的字节码,为需要返回的字段动态添加JsonFilter注解;
[0028]E3、在SpringMVC的Advice类中,使用@JsonFilter注解,来根据JsonFilter的设置过滤返回字段,同时支持内嵌对象字段的动态返回。
[0029]进一步的,本方案公开了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器用于执行一种新型REST查询接口的实现方法。
[0030]进一步的,本方案公开了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行一种新型REST查询接口的实现方法。
[0031]进一步的,本方案公开了一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现一种新型REST查询接口的实现方法。
[0032]相对于现有技术,本专利技术所述的一种新型REST查询接口的实现方法具有以下有益效果:
[0033]本专利技术所述的一种新型REST查询接口的实现方法,单一接口能够支持多种业务能力,能够将查询接口统一封装,无需开发额外接口;前端能够动态控制接口返回字段,并支持内嵌对象字段动态返回,后端无需再关心接口返回字段,可以全部返回由前端做取舍。
附图说明
[0034]构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实
施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:
[0035]图1为本专利技术实施例所述的一种新型REST查询接口的实现方法UML类图示意图;
[0036]图2为本专利技术实施例所述的一种新型REST查询接口的实现方法流程图示意图。
具体实施方式
[0037]需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。
[0038]下面将参考附图并结合实施例来详细说明本专利技术。
[0039]一种新型REST查询接口的实现方法,包括以下步骤:
[0040]S1、定义统一的接口查询入口MainController,将请求报文数据做固定格式封装,作为统一请求接口的body传参,后台程序根据body内的service参数来获取要调用的业务名称;
[0041]S2、根据service参数来获取具体的业务bean实例,利用动态代理调用各自的业务方法执行各自的详细业务逻辑;...

【技术保护点】

【技术特征摘要】
1.一种新型REST查询接口的实现方法,其特征在于,包括以下步骤:S1、定义统一的接口查询入口MainController,将请求报文数据做固定格式封装,作为统一请求接口的body传参,后台程序根据body内的service参数来获取要调用的业务名称;S2、根据service参数来获取具体的业务bean实例,利用动态代理调用各自的业务方法执行各自的详细业务逻辑;S3、补充完善接口的全局功能;S4、在接口处理完返回结果时根据body内params传参来动态返回需要的结果字段,基于Byte Buddy实现在程序运行时动态修改字节码,在需要返回的字段上动态生成JsonFilter注解,定义统一的SpringMVC Advice来实现返回字段的过滤,同时支持内嵌对象字段的动态返回;S5、根据接口传参来调用不同业务,动态控制返回字段,同时支持内嵌对象动态返回字段,根据fields参数来动态控制返回结果。2.根据权利要求1所述的一种新型REST查询接口的实现方法,其特征在于,在步骤S3中,补充完善接口的全局功能包括添加参数校验拦截Validator、添加token权限验证、利用AOP添加接口监控信息。3.根据权利要求1所述的一种新型REST查询接口的实现方法,其特征在于,在步骤S1中,具体包括:A1、创建一个名为MainController的控制器类,定义一个统一的接口查询入口;A2、先从body中获取service参数,service参数为字符串,表示要调用的业务名称。4.根据权利要求1所述的一种新型REST查询接口的实现方法,其特征在于,在步骤S2中,具体包括:B1、在MainController类中,使用ApplicationContext类的getBean()方法,传入从body中获取的service参数,来获取对应的业务bean实例;B2、使用Java的动态代理技术,创建这个业务bean的代理实例,然后调用代理实例的相应方法来执行业务逻辑。5.根据权利要求1所述的一种新型REST查询接口的实现方法,其特征在于,在步骤S3中,具体包括:C1、在MainController类中,可以添...

【专利技术属性】
技术研发人员:方玺凯
申请(专利权)人:紫光云技术有限公司
类型:发明
国别省市:

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

1