Se você preferir uma lista de objetos, uma maneira de fazer isso é assim:
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;
}
E use-o assim:
List<SomeObject> list = someService.getApi("http://localhost:8080/some/api",HttpMethod.GET);
A explicação para o acima pode ser encontrada aqui ( https://www.baeldung.com/spring-rest-template-list ) e é parafraseada abaixo.
"Há algumas coisas acontecendo no código acima. Primeiro, usamos ResponseEntity como nosso tipo de retorno, para envolvê-la na lista de objetos que realmente queremos. Segundo, estamos chamando RestTemplate.exchange () em vez de getForObject () .
Essa é a maneira mais genérica de usar o RestTemplate. Ele exige que especifiquemos o método HTTP, o corpo opcional da solicitação e um tipo de resposta. Nesse caso, usamos uma subclasse anônima de ParameterizedTypeReference para o tipo de resposta.
Esta última parte é o que nos permite converter a resposta JSON em uma lista de objetos do tipo apropriado. Quando criamos uma subclasse anônima de ParameterizedTypeReference, ele usa reflexão para capturar informações sobre o tipo de classe para o qual queremos converter nossa resposta.
Ele se apega a essas informações usando o objeto Type do Java e não precisamos mais nos preocupar com o apagamento do tipo ".