Spring - универсальный метод для получения тела из ResponseEntity с использованием HttpEntity

В моем коде я очень часто использую HttpEntity вместе с ResponseEntity следующим образом:

HttpEntity<?> request = new HttpEntity<String>(myObject, headers);

ResponseEntity<String> response = restTemplate.exchange("someurl", HttpMethod.POST, request, String.class);

а потом

response.getBody()

Я повторяю этот код все время, мне было интересно, возможно ли создать универсальный метод, который позволил бы мне получить response.body(), когда я предоставляю ему объект, который я хочу отправить, URL-адрес и тип HttpMethod. Тело ответа в большинстве случаев будет строкой, но может быть объектом.

1 ответ

Решение

Вы можете использовать приведенный ниже код, здесь тело ответа и тело запроса сделаны общими:

public <T, R> T yourMethodName(R requestBody, 
                               MultiValueMap<String, String> headers, 
                               String url, 
                               HttpMethod type, 
                               Class<T> clazz) {
    HttpEntity<?> request = new HttpEntity<String>(requestBody, headers);
   //You have to create restemplate Obj somewhere
    ResponseEntity<T> response = restTemplate.exchange(url, type, request, clazz);
    return response.getBody();
}
Другие вопросы по тегам