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