繁体   English   中英

我可以在restTemplate.setErrorHandler中包含restTemplate请求主体吗?

[英]Can I include the restTemplate request body inside restTemplate.setErrorHandler?

在下面的RestTemplate的errorHandler的简单代码中,我想在日志中包含请求正文

我想保持代码干净,不要在restTemplate配置类之外使用错误处理程序。 因此,我发现的唯一方法是从其余模板调用者/用户WDYT处理它?

@Configuration
public class HTTPConfiguration {
...

 restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {

            @Override
            public void handleError(ClientHttpResponse response) throws IOException {

                if (response.getStatusCode().series() == HttpStatus.Series.SERVER_ERROR) {

                    LOGGER.error("Server error: {} {}", response.getStatusCode(), response.getStatusText());

                } else if (response.getStatusCode().series() == HttpStatus.Series.CLIENT_ERROR) {

                    LOGGER.error("Client error: {} {}", response.getStatusCode(), response.getStatusText());
                }
            }

            @Override
            public boolean hasError(ClientHttpResponse response) throws IOException {

                return (response.getStatusCode().series() == HttpStatus.Series.CLIENT_ERROR
                        || response.getStatusCode().series() == HttpStatus.Series.SERVER_ERROR);
            }
});


...
}

直接的答案是“否”, ResponseErrorHandler是一个接口,只有三个方法,最好的方法是请求url和请求方法docs

handleError(ClientHttpResponse响应)

Handle the error in the given response.

handleError(java.net.URI url,HttpMethod方法,ClientHttpResponse响应)

Alternative to handleError(ClientHttpResponse) with extra information providing access to the request URL and HTTP method.

handleError(java.net.URI url,HttpMethod方法,ClientHttpResponse响应)

Indicate whether the given response has any errors.

ResponseErrorHandler具有两个实现类DefaultResponseErrorHandler, ExtractingResponseErrorHandler但是它们都不具有以HttpEntity作为参数DefaultResponseErrorHandler的方法以及ExtractingResponseErrorHandler

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM