Jeśli wolisz listę obiektów, możesz to zrobić w następujący sposób:
public <T> List<T> getApi(final String path, final HttpMethod method) {
final RestTemplate restTemplate = new RestTemplate();
final ResponseEntity<List<T>> response = restTemplate.exchange(
path,
method,
null,
new ParameterizedTypeReference<List<T>>(){});
List<T> list = response.getBody();
return list;
}
I użyj go w ten sposób:
List<SomeObject> list = someService.getApi("http://localhost:8080/some/api",HttpMethod.GET);
Wyjaśnienia dotyczące powyższego można znaleźć tutaj ( https://www.baeldung.com/spring-rest-template-list ), a ich parafrazę podano poniżej.
„W powyższym kodzie dzieje się kilka rzeczy. Po pierwsze, używamy ResponseEntity jako naszego typu zwracanego, używając go do zawijania listy obiektów, których naprawdę chcemy. Po drugie, wywołujemy RestTemplate.exchange () zamiast getForObject () .
Jest to najbardziej ogólny sposób użycia RestTemplate. Wymaga od nas określenia metody HTTP, opcjonalnego treści żądania i typu odpowiedzi. W tym przypadku używamy anonimowej podklasy ParameterizedTypeReference dla typu odpowiedzi.
Ta ostatnia część pozwala nam przekonwertować odpowiedź JSON na listę obiektów odpowiedniego typu. Kiedy tworzymy anonimową podklasę ParameterizedTypeReference, wykorzystuje ona refleksję do przechwytywania informacji o typie klasy, na który chcemy przekonwertować naszą odpowiedź.
Przechowuje te informacje za pomocą obiektu Type w Javie i nie musimy się już martwić o usunięcie typu ”.