我已经定义了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());
});
};
关于java - Spring WebClient - 响应时记录 Uri 和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307195/