Saltar al contenido

Devolver la lista devuelto por ResponseEntity

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.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *