Veamos cómo construir un servicio web RESTful con Spring Boot. Spring Boot REST ejemplo.

¿Qué vamos a construir?
Vamos a construir un servicio web que va a aceptar una petición HTTP GET. Esta petición será respondida con un JSON. Spring Boot REST ejemplo.
Creación del proyecto
Puedes usar Spring Initializer, yo creo el proyecto directamente desde Spring Tool Suite. La dependencia que necesitamos para este ejemplo es spring-boot-starter-web.

Vamos a ver el código que se ha generado en nuestro archivo pom.xml.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ejemplo</groupId>
<artifactId>spring-boot-restful</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-restful</name>
<description>Demo de RESTful con GET</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Crear una Clase de Representación de Recursos
Ahora que ya tenemos creado nuestro proyecto, vamos a crear el servicio web. El servicio va a manejar una petición GET (GET Request) para «/saludo«. Opcionalmente podemos añadir el parámetro «nombre» en la consulta. La petición GET nos debe retornar la respuesta 200 OK junto con el cuerpo del JSON.
Vamos a modelar la representación del saludo creando una classe de representación con Java. Esta clase contiene los atributos, un constructor y los getters y setters. El campo id es un identipficador único y el contenido será la cadena de texto del saludo.
Veamos la representación de la entidad:
package com.ejemplo.entity;
public class Saludo {
private final long id;
private final String contenido;
public Saludo(long id, String contenido) {
this.id = id;
this.contenido = contenido;
}
public long getId() {
return id;
}
public String getContenido() {
return contenido;
}
}
Creando el Controlador del Recurso
Y ahora veamos el código del controlador:
package com.ejemplo.controllers;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.ejemplo.entity.Saludo;
@RestController
public class SaludoController {
private static final String template = "Hola, %s!";
private final AtomicLong contador = new AtomicLong();
@GetMapping("/saludo")
public Saludo saludo(@RequestParam(value = "nombre", defaultValue = "mundoooo") String nombre) {
return new Saludo(contador.incrementAndGet(), String.format(template, nombre));
}
}
@RequestParam vincula el valor del parámetro al parámetro del «nombre» del método saludo.
Spring Boot REST ejemplo, el resultado de la ejecución quedaría así:

El id irá aumentando de uno en uno cada vez que refresquemos la página. A continuación podemos ver cómo cambia el contenido si modificamos el valor por defecto del parámetro nombre.

La anotación @RestController
Respecto a esta anotación debemos decir que al utilizarla marca a la clase como un controlador, donde cada método devuelve un objeto de dominio en lugar de la vista.
Puedes descargar el código de este ejemplo en mi repositorio de GitHub.
Este ejemplo es una adaptación del ejemplo mostrado en spring.io: Building a RESTful Web Service.
Deja una respuesta