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();
}