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ón | Rol | Ejemplo |
|---|---|---|
@RestController | Indica que la clase es un controlador REST que gestiona las solicitudes HTTP y devuelve respuestas en formato JSON o XML | @RestController public class CardController |
@RequestMapping | Asocia una URL base a una clase o método | @RequestMapping("/cards") |
@GetMapping | Especifica que un método responde a solicitudes HTTP GET | @GetMapping("/hello") |
@PostMapping | Especifica que un método responde a solicitudes HTTP POST | @PostMapping("/create") |
@PutMapping | Especifica que un método responde a solicitudes HTTP PUT | @PutMapping("/update") |
@DeleteMapping | Especifica 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 previosmvn 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.