我有一个Spring Boot应用程序。我更改每个发布请求的请求正文。是否可以在请求到达控制器之前修改请求主体。请列举一个例子。
简短答案 是,但不容易。
详细信息, 我知道在请求到达控制器中的处理程序方法之前,可以更改请求主体的三个选项。
由于您已经在使用spring-boot,因此选项3(自定义Spring HandlerInterceptor)对您来说似乎是最佳选择。
这里是指向Baeldung文章的链接,该文章涵盖了springHandlerInterceptors。
Baeldung文章不是您问题的完整答案,因为您只能一次阅读InputStrem返回的内容HttpServletRequest。
InputStrem
HttpServletRequest
您将需要创建一个包装器类,以扩展HttpServletRequest 和包装您的包装器类中的每个请求,这些包装器类位于您的自定义HandlerInterceptor或自定义的Filter(过滤器可能是这里的方法)中。
包装类
ByteArrayOutputStream
toByteArray
byte[]
getInputStream
如何包装请求