2017-02-05 7 views
1

"전통적인"웹 프레임 워크에서는 예를 들어 다음을 사용할 수 있습니다. Generic Logging Filter를 구현하기위한 AbstractRequestLoggingFilter. 웹 반응 형 필터는 더 이상 호출되지 않습니다 (HttpServletRequest에서 작동하기 때문에 의미가 있습니다).웹에서 반응하는 일반 HTTP 요청/응답 로깅을 구현하는 방법

AbstractRequestLoggingFilter와 같은 요청 전후의 본문을 포함하여 HTTP 요청을 기록하는 web-reactive를 사용하여 요청 필터를 구현하는 올바른 방향을 제시 할 수 있습니까?

답변

1

WebFilter을 구현하여이를 빈으로 선언하면 자동으로 선택됩니다.

WebFilter 계약은 ServerWebExchange을 기반으로하며 ServerHttpRequest을 보유합니다. 본문은 직접 byte[]으로 액세스 할 수 없으며 Flux<DataBuffer>으로 액세스 할 수 있습니다. 이것은 메모리에 버퍼되거나 필터에 의해 소비되는 것을 의미하지 않기 때문에 전체 요청 본문을 로깅하는 것은 MVC 시나리오보다 복잡합니다. 또한 요청 처리 중에 작업을 차단하지 않아야합니다.