使用“传统”网络框架,可以使用例如AbstractRequestLoggingFilter用于实现通用日志记录筛选器。使用web-reactive时,不再调用过滤器(有意义的是,因为它在HttpServletRequest上运行)。
有人能指出我正确的方向来实现带有web-reactive的请求过滤器,它会在请求之前和之后记录HTTP请求,包括它的正文,就像在AbstractRequestLoggingFilter中一样?
答案 0 :(得分:2)
您可以实现WebFilter
并将其声明为bean,它将自动被选中。
请注意,WebFilter
合约基于ServerWebExchange
,其中包含ServerHttpRequest
。身体不能直接作为byte[]
访问,而是Flux<DataBuffer>
;这并不意味着在内存中缓冲或由过滤器使用,因此记录整个请求主体比在MVC方案中更复杂。此外,您应该避免在请求处理期间阻止操作。