El concepto de Spring REST Client es muy necesario para la mayor parte de los que trabajamos con Spring Framework. En muchas ocasiones tenemos que construir servicios REST con @RestController. Pero en muchos otros casos necesitamos acceder de una forma efectiva a esos servicios creados con Spring Framework . Una de las formas más sencillas de realizar esta tarea es utilizar la clase RestTemplate de Spring que nos simplifica sobre manera la forma de trabajar. Vamos a ver lo sencillo que es, para ello nos construiremos un servicio REST con Spring Boot y la anotación RestController.
package com.arquitecturajava.springrest;
import java.util.concurrent.Future;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HolaRest {
@GetMapping("/hola")
public String hola() {
return "hola";
}
}
Podemos arrancar nuestra aplicación de Spring Boot y tendremos a nuestra disposición el servicio REST a través de un navegador.

Spring REST Client
Sin embargo en muchas ocasiones lo que necesitamos es acceder a este servicio a través de Java y de Spring Framework. Una solución sencilla es usar RestTemplates que nos genera una plantilla para tener un acceso muy sencillo al servicio. Vamos a verlo.
package com.arquitecturajava.cliente;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class ClienteApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(ClienteApplication.class);
app.setWebEnvironment(false);
app.run(args);
}
@Override
public void run(String... arg0) throws Exception {
RestTemplate plantilla = new RestTemplate();
String resultado = plantilla.getForObject("http://localhost:8080/hola", String.class);
System.out.println(resultado);
}
}
Acabamos de utilizar un objeto de tipo RestTemplate para invocar de forma directa una URL y acceder a los datos que se encuentran en /hola. En este caso hemos usado un tipo básico como es String sin embargo podríamos haber usado cualquier objeto de negocio sin problemas (Persona, Factura etc) y hubieramos obtenido los datos almacenados en esa URL. Si ejecutamos nuestro proyecto de Spring Boot a nivel de consola veremos el resultado:

Acabamos de construir dos proyectos que usan Spring Boot y se conectan entre ellos utilizando Spring RestTemplate para crear un Spring REST Client.

Spring nos permite como siempre simplificar sobremanera la forma de acceder a los recursos más habituales utilizando el patrón template.
Otros artículos relacionados:
- Spring Boot WAR sin Microservicios
- Spring 5 Hello World
- Spring Security Annotation y su configuración
- Spring REST
- Spring GetMapping ,PostMapping etc
Deja una respuesta