SpringBoot 多次读取requestBody

936 阅读1分钟

背景:项目中需要对请求体做校验,因为HttpServletRequest不能多次读取inputStream,因此需要对它进行包装,Spring提供请求包装器HttpServletRequesWrapper可以处理这类问题。

  • 自定义请求包装器

image.png

使用成员变量存储请求体的内容

然后覆写getInputStream()方法,每次从成员变量中重新构造新的输入流

  • 自定义过滤器,替换请求

image.png

替换HttpServletRequest类型的请求,使用包装器包装

  • 在拦截器中读取请求体

image.png

image.png