CRUD Spring Boot - Parte 1: Controlador REST

Hero Image
📚 Serie CRUD Spring Boot

🎯 Parte 1: El Controlador REST

Aprende a crear un controlador completo paso a paso

🚀 ¡Bienvenido a la Serie CRUD con Spring Boot!

En esta serie aprenderás a construir un CRUD completo utilizando Spring Boot con base de datos H2 y arquitectura por capas. Comenzamos con el corazón de nuestra API REST: el Controlador.

🏗️ Arquitectura por Capas

Nuestro proyecto sigue una arquitectura por capas que separa responsabilidades:

🎮 Controller

Maneja requests HTTP

⚙️ Service

Lógica de negocio

🗃️ Repository

Acceso a datos

💾 H2 Database

Almacenamiento
🐾 MascotaController.java - Código Completo
@RestController
@AllArgsConstructor
public class MascotaController {
@Autowired
private MascotaService service;
@GetMapping("/api/list")
private List<MascotaEntity> findAll() {
return service.getAllMascotas();
}
@PostMapping("/api/guardar")
private MascotaEntity guardar(@RequestBody MascotaEntity mascota) {
return service.guardarMascota(mascota);
}
@GetMapping("/api/{id}")
private MascotaEntity findById(@PathVariable Long id) {
return service.findById(id);
}
@DeleteMapping("/api/eliminar/{id}")
private void eliminarMascota(@PathVariable Long id) {
service.deleteMascota(id);
}
}

1Anotaciones de Clase

@RestController: Le dice a Spring que esta clase manejará peticiones HTTP y retornará datos JSON automáticamente. Es la combinación de @Controller + @ResponseBody.

@AllArgsConstructor: Lombok genera automáticamente un constructor con todos los campos como parámetros, simplificando la inyección de dependencias.

2Inyección de Dependencias

@Autowired: Spring inyecta automáticamente una instancia de MascotaService. Este servicio contendrá toda la lógica de negocio.

💡 Nota: Con @AllArgsConstructor, también podrías inyectar por constructor sin @Autowired.

3Mapeo de Endpoints

Cada método está mapeado a una URL específica usando anotaciones:

  • @GetMapping: Para obtener datos (READ)
  • @PostMapping: Para crear datos (CREATE)
  • @DeleteMapping: Para eliminar datos (DELETE)

4Parámetros y Respuestas

@RequestBody: Convierte el JSON recibido en objeto Java automáticamente.

@PathVariable: Extrae valores de la URL (como el ID) y los pasa como parámetros al método.

GETListar Todas

/api/list

Retorna una lista con todas las mascotas registradas en la base de datos.

Respuesta: Array JSON con mascotas

POSTCrear Mascota

/api/guardar

Recibe los datos de una mascota en JSON y la guarda en la base de datos.

Requiere: JSON en el body de la petición

GETBuscar por ID

/api/{id}

Busca y retorna una mascota específica usando su ID único.

Parámetro: ID en la URL

DELETEEliminar

/api/eliminar/{id}

Elimina permanentemente una mascota de la base de datos.

Parámetro: ID en la URL

🧪 ¿Cómo Probar estos Endpoints?

Una vez que tengas tu aplicación corriendo, puedes probar estos endpoints con:

📮 Postman

Herramienta visual para probar APIs. Ideal para principiantes.

🖥️ cURL

Comandos desde terminal. Perfecto para scripts y automatización.

🌐 Frontend

Conexión directa desde React, Angular o cualquier cliente web.

📋 Swagger UI

Documentación automática e interactiva (si está configurada).

🔧 Ejemplo de Prueba con cURL
# Listar todas las mascotas curl -X GET http://localhost:8080/api/list # Crear una nueva mascota curl -X POST http://localhost:8080/api/guardar \ -H "Content-Type: application/json" \ -d '{"nombre":"Firulais","especie":"Perro","edad":3}' # Buscar mascota por ID curl -X GET http://localhost:8080/api/1 # Eliminar mascota curl -X DELETE http://localhost:8080/api/eliminar/1

🎯 ¿Qué Viene Después?

Este controlador es solo el primer paso. En las próximas partes de la serie cubriremos:

Parte 2

🔧 Service Layer

Parte 3

🗃️ Repository & JPA

Parte 4

📊 Entity & H2 Config

Parte 5

✅ Testing & Deploy

Extends ___

Politica privacidad

politica de privacidad

Term. condiciones

Terminos y condiciones del vlog elingaldo

Disclaimer

Descargo de responsabilidades.

Donación

Donaciones, sabes? el servidor no se mantiene del aire.