Spring WebClient - 日志 Uri 和响应方法



我定义了WebClient

@Bean
WebClient myWebClient() {
return WebClient.builder()
.baseUrl(baseUrl)
.filter(logRequest())
.filter(logResponse())
.build();
}
private ExchangeFilterFunction logRequest() {
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
log.info("MY_WEB_CLIENT | Performing {} {} request", clientRequest.method(), clientRequest.url());
return Mono.just(clientRequest);
});
}
private ExchangeFilterFunction logResponse() {
return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
log.info("MY_WEB_CLIENT | Respond with {} status code", clientResponse.rawStatusCode());
return Mono.just(clientResponse);
});
}

logResponse过滤方法中,我记录了响应httpStatusCode,但我也想添加执行请求httpMethod + uri。我知道我可以在请求之前访问这些数据(使用ExchangeFilterFunction.ofRequestProcessor()(,但是有没有办法将这些数据添加到我的logResponse过滤器中?

找到了方法:

private static ExchangeFilterFunction log() {
return (ClientRequest request, ExchangeFunction next) -> {
log.info("MY_WEB_CLIENT | Performing {} {} request", request.method(), request.url());
return next.exchange(request)
.doOnNext((ClientResponse response) -> {
log.info("MY_WEB_CLIENT | {} {} Respond with {} status code",request.method(), request.url(),
response.rawStatusCode());
});
};