CN115480847A - 一种springboot记录请求出入参的方法 - Google Patents
一种springboot记录请求出入参的方法 Download PDFInfo
- Publication number
- CN115480847A CN115480847A CN202211039942.1A CN202211039942A CN115480847A CN 115480847 A CN115480847 A CN 115480847A CN 202211039942 A CN202211039942 A CN 202211039942A CN 115480847 A CN115480847 A CN 115480847A
- Authority
- CN
- China
- Prior art keywords
- request
- springboot
- processor
- participant
- custom
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
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
本发明提供了一种springboot记录请求出入参的方法,包括:接收请求指令,利用自定义过滤器对请求类型和请求内容大小做判断,符合设定条件的请求通过请求对象方法读取后存储于自定义包装类的body字符串属性字段;建立对Controller控制器方法的AOP切面实现方法,将http请求的请求参数、请求体入参及业务处理后的出参进行日志记录。本发明所述的springboot记录请求出入参的方法实现Body请求体可重复读取,为后续扩展提供可能;逻辑定义在公共项目,体系内各微服务可依赖它,编码复用保持一致性。
Description
技术领域
本发明属于通用后端技术领域,尤其是涉及一种springboot记录请求出入参的方法。
背景技术
当今微服务(Micro Service)盛行,其中后端服务中最耀眼的当属SpringBoot。背靠Spring框架衍生出来的整个生态体系,无论从“出身”,还是社区的支撑上,SpringBoot都是微服务框架不二之选。
为了更便捷的排查问题或埋点分析对请求的出入参记录至关重要。目前存在两个痛点:一、只带Query参数的请求方式,重复获取不存在问题,对带Body请求体的请求方式如POST、PUT,在拦截器记录时请求对象方法request.getReader()读取过一次,但到Controller控制器注入@RequestBody(springmvc获取请求体的注解)时,获取不到而导致异常,只因为请求体在此框架内只能读取一次,阅后即焚;二、微服务众多,每个服务都需要在WebMvcConfigurerAdapte(springmvc的适配器类)适配添加HandlerInterceptor(处理器)自定义拦截器,大系统内达不到统一,且需要配套添加拦截路径,维护麻烦。
发明内容
有鉴于此,本发明旨在提出一种springboot记录请求出入参的方法,以期至少部分的解决上述技术问题之一。
为达到上述目的,本发明的技术方案是这样实现的:
一方面,本发明提供了一种springboot记录请求出入参的方法,包括:
接收请求指令,利用自定义过滤器对请求类型和请求内容大小做判断,符合设定条件的请求通过请求对象方法读取后存储于自定义包装类的body字符串属性字段;
建立对Controller控制器方法的AOP切面实现方法,将http请求的请求参数、请求体入参及业务处理后的出参进行日志记录。
进一步的,所述自定义过滤器采用CustomRequestFilter。
进一步的,所述请求对象方法采用request.getReader()。
进一步的,所述自定义包装类采用CustomRequestWrapper。
进一步的,所述自定义过滤器注册到spring容器。
第二方面,本发明提供了一种电子设备/服务器,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器在执行所述指令时,实现上述第一方面所述的springboot记录请求出入参的方法。
第三方面,本发明提供了一种可读取存储介质,用于存储计算机程序,所述计算机程序在被处理器执行时,实现上述第一方面所述的springboot记录请求出入参的方法。
相对于现有技术,本发明所述的springboot记录请求出入参的方法具有以下优势:
1、本发明所述的springboot记录请求出入参的方法,实现Body请求体可重复读取,为后续扩展提供可能。
2、逻辑定义在公共项目,体系内各微服务可依赖它,编码复用保持一致性。
3、各微服务不需要配置拦截器,维护繁琐的拦截路径,若不需要记录日志,用注解的方式进行排除即可,非常方便。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明所述的springboot记录请求出入参的方法流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
本实施例提供了一种springboot记录请求出入参的方法,步骤如下:
1、自定义过滤器CustomRequestFilter(类名)先对请求类型和请求内容大小做判断,符合设定条件的请求通过请求对象方法request.getReader()读取后存于CustomRequestWrapper(类名)自定义包装类(其继承了框架的HttpServletRequestWrapper请求对象包装类)的body字符串属性字段,后续控制层方法注入@RequestBody(springmvc获取请求体的注解)时则直接从CustomRequestWrapper(类名)自定义包装类方法获取(可实现重复读)。
2、将上述自定义过滤器注册到spring容器,保证其在其他过滤器之前执行。
3、自定义对Controller控制器方法的AOP(一种动态代理,切面编程技术)切面实现,将http请求的Query(请求参数)、Body(请求体)入参及业务处理后的出参进行日志记录,(其中Body在AOP方法中的获取来源也是CustomRequestWrapper(类名)自定义包装类)。
AOP实现方法中,判断控制器方法上忽略记录的注解@NoLogAspect(自定义注解)的属性,为空或者相关属性值(noLogRequest属性表示是否打印入参日志、noLogResponse属性表示是否打印出参日志)为false则记录,否则不记录。
本实施例提供了一种电子设备/服务器,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器在执行所述指令时,实现上述实施例所述的springboot记录请求出入参的方法。
本实施例提供了一种可读取存储介质,用于存储计算机程序,所述计算机程序在被处理器执行时,实现上述实施例所述的springboot记录请求出入参的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种springboot记录请求出入参的方法,其特征在于,包括:
接收请求指令,利用自定义过滤器对请求类型和请求内容大小做判断,符合设定条件的请求通过请求对象方法读取后存储于自定义包装类的body字符串属性字段;
建立对Controller控制器方法的AOP切面实现方法,将http请求的请求参数、请求体入参及业务处理后的出参进行日志记录。
2.根据权利要求1所述的springboot记录请求出入参的方法,其特征在于:所述自定义过滤器采用CustomRequestFilter。
3.根据权利要求1所述的springboot记录请求出入参的方法,其特征在于:所述请求对象方法采用request.getReader()。
4.根据权利要求1所述的springboot记录请求出入参的方法,其特征在于,所述自定义包装类采用CustomRequestWrapper。
5.根据权利要求1所述的springboot记录请求出入参的方法,其特征在于:所述自定义过滤器注册到spring容器。
6.一种电子设备/服务器,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于,所述处理器在执行所述指令时,实现权利要求1-5任一所述的springboot记录请求出入参的方法。
7.一种可读取存储介质,用于存储计算机程序,其特征在于,所述计算机程序在被处理器执行时,实现权利要求1-5任一所述的springboot记录请求出入参的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211039942.1A CN115480847A (zh) | 2022-08-29 | 2022-08-29 | 一种springboot记录请求出入参的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211039942.1A CN115480847A (zh) | 2022-08-29 | 2022-08-29 | 一种springboot记录请求出入参的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115480847A true CN115480847A (zh) | 2022-12-16 |
Family
ID=84421772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211039942.1A Pending CN115480847A (zh) | 2022-08-29 | 2022-08-29 | 一种springboot记录请求出入参的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115480847A (zh) |
-
2022
- 2022-08-29 CN CN202211039942.1A patent/CN115480847A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021218328A1 (zh) | 多租户访问服务实现方法、装置、设备及存储介质 | |
CN111625452A (zh) | 流量回放方法和系统 | |
CN103226598B (zh) | 访问数据库的方法和装置以及数据库管理系统 | |
US11741410B2 (en) | Centralized cloud service management | |
CN114296836B (zh) | 远程配置系统 | |
CN110647460A (zh) | 一种测试资源管理方法、装置和测试客户端 | |
CN113381866A (zh) | 基于网关的服务调用方法、装置、设备及存储介质 | |
CN111200637B (zh) | 一种缓存的处理方法及装置 | |
CN116204438A (zh) | 测试用例生成方法、自动化测试方法和相关装置 | |
CN108965054A (zh) | 一种客户端与服务端数据快速交互方法 | |
CN112272115A (zh) | 基于流式处理api网关及其日志采集方法 | |
CN110515750A (zh) | 一种应用拓扑生成方法、系统及集群 | |
CN115480847A (zh) | 一种springboot记录请求出入参的方法 | |
CN111104313B (zh) | 一种rest api接口的自动化测试方法、系统及设备 | |
CN111124883B (zh) | 一种基于树形表格的测试用例库引入方法、系统及设备 | |
CN117290244A (zh) | 接口测试案例的生成方法、装置、计算机设备及存储介质 | |
CN114155969A (zh) | 医疗数据获取方法及装置、电子设备、存储介质 | |
CN113468579A (zh) | 数据访问方法、装置、设备和存储介质 | |
CN111970333A (zh) | 一种基于同一客户端实现两个会话共存的方法及装置 | |
CN114006883B (zh) | 一种跨网数据穿透交互的方法、装置、设备及存储介质 | |
CN116525077B (zh) | 人工智能医疗器械测试数据的处理方法及系统 | |
CN110113312A (zh) | 一种访问请求的识别方法和处理方法及计算机可读存储介质 | |
CN114584621B (zh) | 一种数据发送的方法及装置 | |
CN113938692B (zh) | 一种视频直播的风险控制方法及装置 | |
CN1092901C (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 |