• Saltar a la navegación principal
  • Saltar al contenido principal

CARLOSZR.COM

Mi blog personal, CarlosZR

  • Blog
  • Contacto
  • Curso de SwiftUI por CarlosZR

Curso Spring Boot y Angular / 30/06/2020

Construir un Servicio Web RESTful con Spring Boot

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

Spring Boot REST ejemplo
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.

dependencia Spring Web
Añadiendo dependencia Spring 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í:

localhost:8080/saludo

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.

localhost:8080/saludo modificando valor de parámetro

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.

Publicado en: Curso Spring Boot y Angular Etiquetado como: restful, spring boot

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

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

Carlos ZR

  • Sígueme en Twitter
  • Política de Cookies
  • Política de Privacidad
  • Aviso Legal

Utilizamos cookies para ofrecerte la mejor experiencia en nuestra web.

Puedes aprender más sobre qué cookies utilizamos o desactivarlas en los ajustes.

CARLOSZR.COM
Powered by  GDPR Cookie Compliance
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.