一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种springboot记录请求出入参的方法与流程

2022-12-20 01:37:52 来源:中国专利 TAG:


1.本发明属于通用后端技术领域,尤其是涉及一种springboot记录请求出入参的方法。


背景技术:

2.当今微服务(micro service)盛行,其中后端服务中最耀眼的当属springboot。背靠spring框架衍生出来的整个生态体系,无论从“出身”,还是社区的支撑上,springboot都是微服务框架不二之选。
3.为了更便捷的排查问题或埋点分析对请求的出入参记录至关重要。目前存在两个痛点:一、只带query参数的请求方式,重复获取不存在问题,对带body请求体的请求方式如post、put,在拦截器记录时请求对象方法request.getreader()读取过一次,但到controller控制器注入@requestbody(springmvc获取请求体的注解)时,获取不到而导致异常,只因为请求体在此框架内只能读取一次,阅后即焚;二、微服务众多,每个服务都需要在webmvcconfigureradapte(springmvc的适配器类)适配添加handlerinterceptor(处理器)自定义拦截器,大系统内达不到统一,且需要配套添加拦截路径,维护麻烦。


技术实现要素:

4.有鉴于此,本发明旨在提出一种springboot记录请求出入参的方法,以期至少部分的解决上述技术问题之一。
5.为达到上述目的,本发明的技术方案是这样实现的:
6.一方面,本发明提供了一种springboot记录请求出入参的方法,包括:
7.接收请求指令,利用自定义过滤器对请求类型和请求内容大小做判断,符合设定条件的请求通过请求对象方法读取后存储于自定义包装类的body字符串属性字段;
8.建立对controller控制器方法的aop切面实现方法,将http请求的请求参数、请求体入参及业务处理后的出参进行日志记录。
9.进一步的,所述自定义过滤器采用customrequestfilter。
10.进一步的,所述请求对象方法采用request.getreader()。
11.进一步的,所述自定义包装类采用customrequestwrapper。
12.进一步的,所述自定义过滤器注册到spring容器。
13.第二方面,本发明提供了一种电子设备/服务器,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器在执行所述指令时,实现上述第一方面所述的springboot记录请求出入参的方法。
14.第三方面,本发明提供了一种可读取存储介质,用于存储计算机程序,所述计算机程序在被处理器执行时,实现上述第一方面所述的springboot记录请求出入参的方法。
15.相对于现有技术,本发明所述的springboot记录请求出入参的方法具有以下优势:
16.1、本发明所述的springboot记录请求出入参的方法,实现body请求体可重复读取,为后续扩展提供可能。
17.2、逻辑定义在公共项目,体系内各微服务可依赖它,编码复用保持一致性。
18.3、各微服务不需要配置拦截器,维护繁琐的拦截路径,若不需要记录日志,用注解的方式进行排除即可,非常方便。
附图说明
19.构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
20.图1为本发明所述的springboot记录请求出入参的方法流程图。
具体实施方式
21.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
22.下面将参考附图并结合实施例来详细说明本发明。
23.本实施例提供了一种springboot记录请求出入参的方法,步骤如下:
24.1、自定义过滤器customrequestfilter(类名)先对请求类型和请求内容大小做判断,符合设定条件的请求通过请求对象方法request.getreader()读取后存于customrequestwrapper(类名)自定义包装类(其继承了框架的httpservletrequestwrapper请求对象包装类)的body字符串属性字段,后续控制层方法注入@requestbody(springmvc获取请求体的注解)时则直接从customrequestwrapper(类名)自定义包装类方法获取(可实现重复读)。
25.2、将上述自定义过滤器注册到spring容器,保证其在其他过滤器之前执行。
26.3、自定义对controller控制器方法的aop(一种动态代理,切面编程技术)切面实现,将http请求的query(请求参数)、body(请求体)入参及业务处理后的出参进行日志记录,(其中body在aop方法中的获取来源也是customrequestwrapper(类名)自定义包装类)。
27.aop实现方法中,判断控制器方法上忽略记录的注解@nologaspect(自定义注解)的属性,为空或者相关属性值(nologrequest属性表示是否打印入参日志、nologresponse属性表示是否打印出参日志)为false则记录,否则不记录。
28.本实施例提供了一种电子设备/服务器,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器在执行所述指令时,实现上述实施例所述的springboot记录请求出入参的方法。
29.本实施例提供了一种可读取存储介质,用于存储计算机程序,所述计算机程序在被处理器执行时,实现上述实施例所述的springboot记录请求出入参的方法。
30.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不
应认为超出本发明的范围。
31.在本技术所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
32.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
33.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献