Могу ли я включить тело запроса restTemplate внутри restTemplate.setErrorHandler? - PullRequest
0 голосов
/ 28 января 2019

Здесь В приведенном ниже простом коде errorHandler от 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);
            }
});


...
}

1 Ответ

0 голосов
/ 28 января 2019

Прямой ответ - нет, 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 (URL-адрес java.net.URI, метод HttpMethod, ответ ClientHttpResponse)

Indicate whether the given response has any errors.

И ResponseErrorHandler имеет два класса реализации DefaultResponseErrorHandler, ExtractingResponseErrorHandler, но ни один из них не имеет метода с HttpEntity в качестве аргумента DefaultResponseErrorHandler и ExtractingResponseErrorHandler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...