Saltar al contenido principal

Preparativos para la Creación de un RestController

Mensaje para los estudiantes​

Antes de comenzar el ejercicio práctico de creación de un RestController, es esencial que se tome el tiempo para leer bien esta sección. Todavía no es el momento de programar, sino de prepararse y comprender la teoría detrás de lo que vamos a hacer.

1. ¿Qué es un Servicio Web?​

Un servicio web es un componente de software que permite a las aplicaciones comunicarse entre sí a través de una red. Expone funcionalidades o datos que otras aplicaciones pueden consumir enviando solicitudes HTTP y recibiendo respuestas.

Arquitectura Cliente-Servidor​

Flujo de Comunicación​


2. Las Anotaciones en Spring Boot​

Las anotaciones son metadatos que se agregan al código para indicar cómo deben comportarse ciertas partes. Permiten que Spring Boot configure automáticamente su aplicación.

Principales Anotaciones​

AnotaciónRolEjemplo
@RestControllerIndica que la clase es un controlador REST que gestiona las solicitudes HTTP y devuelve respuestas en formato JSON o XML@RestController public class CardController
@RequestMappingAsocia una URL base a una clase o método@RequestMapping("/cards")
@GetMappingEspecifica que un método responde a solicitudes HTTP GET@GetMapping("/hello")
@PostMappingEspecifica que un método responde a solicitudes HTTP POST@PostMapping("/create")
@PutMappingEspecifica que un método responde a solicitudes HTTP PUT@PutMapping("/update")
@DeleteMappingEspecifica que un método responde a solicitudes HTTP DELETE@DeleteMapping("/delete")

Jerarquía de Anotaciones​


3. Modelo (Model) y Controlador (Controller)​

El Modelo​

Un Modelo es una clase Java que representa una entidad de negocio. Contiene los atributos y los métodos para gestionar los datos.

Ejemplo: Modelo Card

Código Java correspondiente:

public class Card {
private int cardId;
private int customerId;
private String cardNumber;
private String cardType;
private int totalLimit;
private int amountUsed;
private int availableAmount;
private String createDt;

// Getters et Setters
}

El Controlador​

Un Controlador es una clase que gestiona las solicitudes HTTP entrantes y devuelve respuestas. Hace el enlace entre el cliente y la lógica de negocio.

Ejemplo: Controlador CardController

Código Java correspondiente:

@RestController
@RequestMapping("/cards")
public class CardController {

@GetMapping("/hello")
public String helloCard() {
return "Hello, Card!";
}

@GetMapping("/{id}")
public Card getCard(@PathVariable int id) {
// Lógica para recuperar una tarjeta
}

@PostMapping
public Card createCard(@RequestBody Card card) {
// Lógica para crear una tarjeta
}
}

Arquitectura MVC con Spring Boot​


4. Prerrequisitos Técnicos​

Antes de comenzar el ejercicio práctico, asegúrese de que su entorno de desarrollo esté correctamente configurado.

Verificación de Herramientas​

1. Java Development Kit (JDK)​

Versión requerida: Java 17 o superior

Verificación:

java -version

Resultado esperado:

java version "17.0.x" o superior

2. Apache Maven​

Versión requerida: Maven 3.9 o superior (recomendado para la estabilidad)

Verificación:

mvn -version

Resultado esperado:

Apache Maven 3.9.x o superior
Java version: 17.x.x

Nota: Maven 3.9+ ofrece mejor estabilidad y compatibilidad con Java 17+.

3. Visual Studio Code​

Extensiones requeridas:

  • Extension Pack for Java
  • Spring Boot Extension Pack

Diagrama del Entorno de Desarrollo​


5. Plan del Ejercicio Práctico​

Objetivo​

Aprender a crear un controlador REST para gestionar solicitudes HTTP creando una aplicación Spring Boot completa.

Pasos del Ejercicio​

Detalles de los Pasos​

Paso 1: Configuración del Proyecto​

Utilizar Spring Initializr para generar un proyecto Spring Boot con:

  • Project: Maven
  • Language: Java
  • Spring Boot Version: 3.x
  • Dependencies: Spring Web, Spring Boot DevTools

Paso 2: Creación del Modelo​

Crear una clase Card en el paquete model con los atributos necesarios.

Paso 3: Creación del Controlador​

Crear una clase CardController en el paquete controller con:

  • Anotación @RestController
  • Anotación @RequestMapping("/cards")
  • Métodos con @GetMapping, @PostMapping, etc.

Paso 4: Compilación y Ejecución con Maven​

Comandos Maven esenciales:

Opción 1: Comandos separados

# Limpiar el proyecto
mvn clean

# Compilar e instalar (sin tests)
mvn install -DskipTests

# Ejecutar la aplicación
mvn spring-boot:run

Opción 2: Comando combinado (RECOMENDADO)

# Todo en un solo comando
mvn clean install -DskipTests spring-boot:run

Explicación de los comandos:

  • mvn clean : Elimina los archivos compilados previos
  • mvn install : Compila el proyecto y crea el archivo JAR
  • -DskipTests : Omite la ejecución de tests (más rápido para desarrollo)
  • spring-boot:run : Inicia la aplicación Spring Boot

Nota: El comando combinado es más eficiente porque ejecuta todo el ciclo de una vez.

Paso 6: Prueba​

Probar los endpoints:

  • http://localhost:8080/cards/hello
  • Utilizar Postman para probar los demás métodos

6. Estructura del Proyecto Spring Boot​


7. Ciclo de Vida de una Solicitud HTTP​


Conceptos Clave a Recordar​

1. Separación de Responsabilidades​

2. Anotaciones Spring Boot​

  • @RestController = @Controller + @ResponseBody (devuelve automáticamente JSON)
  • @RequestMapping define la ruta base
  • @GetMapping/@PostMapping/@PutMapping/@DeleteMapping corresponden a los métodos HTTP

3. Formato de Respuesta​

Por defecto, Spring Boot convierte automáticamente los objetos Java a JSON gracias a Jackson.


Conclusión​

Esta lectura preparatoria le ha proporcionado:

  • Una comprensión de los servicios web y su funcionamiento
  • El conocimiento de las anotaciones esenciales de Spring Boot
  • La distinción entre Modelo y Controlador
  • Los prerrequisitos técnicos necesarios
  • Una visión general del plan del ejercicio práctico

¡Ahora está listo para pasar al ejercicio práctico donde creará su primer RestController!

Importante: Si algo no está claro, no dude en releer esta sección o en hacer preguntas. Una buena comprensión teórica facilitará mucho la práctica.