Sadot Hernández

Consumir una API REST con RestTemplate (GET)

PublicadoJanuary 17, 2021

¿Cómo puedo consumir un Servicio REST desde mi aplicación con Spring Boot?

image

El acceso a las API's REST dentro de una aplicación Spring gira en torno al uso de la clase Spring RestTemplate. Está clase está diseñada en los mismos principios que los de muchas otras clases de Spring *Template (por ejemplo, JdbcTemplate, JmsTemplate), que proporcionan un enfoque simplificado con comportamientos predeterminados para realizar tareas complejas.

Dado que la lase  RestTemplate es un cliente síncrono que está diseñado para llamar a servicios REST . No debería sorprender que sus métodos principales estén estrechamente vinculados a los fundamentos de REST, que son los métodos HEAD, GET, POST, PUT, DELETE y OPTIONS del protocolo HTTP .

1. Información General

En este tutorial rápido, veremos cómo podemos consumir una API mediante exchange (…), getForEntity (…) y getForObject (…) usando Spring Boot.

2. Dependencias de Gradle

Para crear este ejemplo, usaremos las bibliotecas Spring Framework.

3. Estructura del Proyecto

 Antes de saltar al proyecto, creemos la estructura de nuestro proyecto como se muestra a continuación:

4. API

 Para nuestro ejemplo utilizaremos una API pública del sitio de JSONPlaceHolder, nos da algunas opciones como recursos, pero en este ejemplo utilizaremos el recurso de comentarios que nos regresa la siguiente respuesta en formato JSON.

5. Clase Modelo

Nuestra aplicación constará de una sola clase de modelo de nombre “OpenPlaceHolderModel”, está contendrá los siguientes atributos en base a la respuesta que nos será regresada en la petición GET.

6. Servicio e Implementación

Ahora crearemos una interfaz de nombre “OpenPlaceHolderService” en nuestro paquete servicios, este tendrá tres métodos abstractos los cuales conformaran nuestro servicio.

Una vez creada nuestra interfaz “OpenPlaceHolderService” crearemos una clase de nombre “OpenPlaceHolderServiceImpl” en nuestro paquete “impl” que se encuentra dentro del paquete servicios, este implementara los tres metodos abstractos que creamos en la interfaz “OpenPlaceHolderService” y a su vez le inyectaremos nuestro “RestTemplate” el cual nos ayudara a implementar nuestros métodos exchange (…), getForEntity (…) y getForObject (…).

7. Bean RestTemplate

Para poder hacer uso de RestTemplate en nuestra clase “OpenPlaceHolderServiceImpl ” necesitamos crear un Bean en nuestra clase principal o crear dentro de nuestro proyecto una clase “Configuración” anotada con “@Configuration”, en este ejemplo lo haremos en nuestra clase principal.

8. Clase Controller

Vamos a crear una clase “OpenPlaceHolderController” en nuestro paquete controladores. Lo primero que vamos a hacer es anotar la clase con un @RestController para indicar que esta clase manejara solicitudes HTTP.

Esta clase inyectaremos nuestro servicio “OpenPlaceHolderService” para poder hacer uso de nuestros métodos implementados en nuestra clase “OpenPlaceHolderServiceImpl”.

En esta clase se tendrán 3 métodos con la anotación @GetMapping que indicarán que se trata de una petición tipo GET.

9. Resultado

Para poder testear nuestros servicios podemos hacer uso de Postman y/o SoapUI. Pero en está ocasión hare uso de Postman.

EndPoint: buscarComentariosConExchange

EndPoint: buscarComentariosConForEntity

EndPoint: buscarComentariosConForObject

Como se pudo ver tenemos 3 maneras para poder consumir una API mediante “RestTemplate”

Si gustas ver el código fuente, este está disponible en Gitlab.