Siéntete libre de compartir nuestra página y códigos en tus redes sociales, necesitamos tu ayuda para hacer crecer esta comunidad.
Solución:
En primer lugar, si conoce el tipo de elementos en su Lista, puede usar el ParameterizedTypeReference
clase así.
ResponseEntity> res = restTemplate.postForEntity(getUrl(), myDTO, new ParameterizedTypeReference>() );
Entonces, si solo desea devolver la lista, puede hacer:
return res.getBody();
Y si lo único que le importa es la lista, puede hacer lo siguiente:
// postForEntity returns a ResponseEntity, postForObject returns the body directly.
return restTemplate.postForObject(getUrl(), myDTO, new ParameterizedTypeReference>() );
No pude obtener la respuesta aceptada para trabajar. Parece postForEntity
ya no tiene esta firma de método. tuve que usar restTemplate.exchange()
en cambio:
ResponseEntity> res = restTemplate.exchange(getUrl(), HttpMethod.POST, myDTO, new ParameterizedTypeReference>() );
Luego para devolver la lista, como arriba:
return res.getBody();
En la última versión (Spring Framework 5.1.6), ambas respuestas no funcionan. Como kaybee99 mencionó en su respuesta postForEntity
Se cambió la firma del método. También el restTemplate.exchange()
El método y sus sobrecargas necesitan un RequestEntity
o su padre HttpEntity
objeto. No se puede pasar mi objeto DTO como se mencionó.
Consulte la documentación de la clase RestTemplate
Aquí está el código que funcionó para mí
List shinobis = new ArrayList<>();
shinobis.add(new Shinobi(1, "Naruto", "Uzumaki"));
shinobis.add(new Shinobi(2, "Sasuke", "Uchiha");
RequestEntity> request = RequestEntity
.post(new URI(getUrl()))
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.body(shinobis);
ResponseEntity> response = restTemplate.exchange(
getUrl(),
HttpMethod.POST,
request,
new ParameterizedTypeReference>()
);
List result = response.getBody();
Espero que ayude a alguien.