Возврат списка, возвращенного ResponseEntity

мой клиент REST использует RestTemplate для получения списка объектов.

ResponseEntitiy<List> res = restTemplate.postForEntity(getUrl(), myDTO, List.class);

теперь я хочу использовать возвращенный список и вернуть его как список вызывающему классу. В случае string можно использовать toString, но как работает для списков?

2 ответов


во-первых, если вы знаете тип элемента в списке, вы можете использовать ParameterizedTypeReference класс вот так.

ResponseEntity<List<MyObj>> res = restTemplate.postForEntity(getUrl(), myDTO, new ParameterizedTypeReference<List<MyObj>>() {});

тогда, если вы просто хотите вернуть список, вы можете сделать:

return res.getBody();

и если все, что вам нужно, это список, вы можете просто сделать:

// postForEntity returns a ResponseEntity, postForObject returns the body directly.
return restTemplate.postForObject(getUrl(), myDTO, new ParameterizedTypeReference<List<MyObj>>() {});

Я не мог получить принятый ответ на работу. Кажется postForEntity больше не имеет этой сигнатуры метода. Мне пришлось использовать restTemplate.exchange() вместо:

ResponseEntity<List<MyObj>> res = restTemplate.exchange(getUrl(), HttpMethod.POST, myDTO, new ParameterizedTypeReference<List<MyObj>>() {});

затем вернуть список, как выше:

return res.getBody();