1

使用“传统”Web 框架,可以使用例如 AbstractRequestLoggingFilter 来实现通用日志过滤器。使用 web-reactive 过滤器不再被调用(这是有道理的,因为它在 HttpServletRequest 上运行)。

任何人都可以为我指出正确的方向来实现具有 web-reactive 的请求过滤器,它记录 HTTP 请求,包括它的主体,在请求之前和之后,就像在 AbstractRequestLoggingFilter 中一样?

4

1 回答 1

2

您可以实现 aWebFilter并将其声明为 bean,它将被自动拾取。

请注意,WebFilter合同基于ServerWebExchange,其中包含ServerHttpRequest. 正文不能直接访问为;byte[]而是作为Flux<DataBuffer>; 这并不意味着在内存中缓冲或被过滤器消耗,因此记录整个请求主体比在 MVC 场景中更复杂。此外,您应该避免在请求处理期间阻塞操作。

于 2017-02-14T09:46:55.213 回答