我可以在 restTemplate.setErrorHandler 中包含 restTemplate 请求正文吗?



这里 在下面的 RestTemplate 错误处理程序的简单代码中,我想将请求正文包含在日志中

我想保持代码干净,不使用错误处理程序 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和请求方法文档

handleError(ClientHttpResponse response)

Handle the error in the given response.

handleError(java.net.URI url, HttpMethod method, ClientHttpResponse response)

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

handleError(java.net.URI url, HttpMethod method, ClientHttpResponse response)

Indicate whether the given response has any errors.

ResponseErrorHandler有两个实现类DefaultResponseErrorHandler, ExtractingResponseErrorHandler但它们都没有将HttpEntity作为参数的方法 DefaultResponseErrorHandler 和 ExtractingResponseErrorHandler

最新更新