Package com.proyecto.jpa.controller


package com.proyecto.jpa.controller
Paquete que contiene los controladores REST (Capa de Presentación).

Descripción

Este paquete implementa la capa de presentación mediante controladores REST que exponen endpoints HTTP para interactuar con el sistema. Los controladores reciben peticiones HTTP, delegan la lógica de negocio a los servicios y retornan respuestas en formato JSON.

Controladores Disponibles

Arquitectura de 3 Capas

 Controller (Presentación) ← Esta capa
     ↓
 Service (Lógica de Negocio)
     ↓
 Repository (Acceso a Datos)
     ↓
 Database (Persistencia)
 

Responsabilidades de los Controladores

  • Recibir peticiones HTTP: GET, POST, PUT, DELETE
  • Validar datos de entrada: Usando Bean Validation
  • Delegar a servicios: No contienen lógica de negocio
  • Manejar respuestas: Códigos HTTP y formato JSON
  • Manejo de errores: Traducir excepciones a respuestas HTTP

Endpoints REST

Todos los controladores siguen las convenciones RESTful:

  • GET /api/{recurso} - Obtener todos
  • GET /api/{recurso}/{id} - Obtener uno por ID
  • POST /api/{recurso} - Crear nuevo
  • PUT /api/{recurso}/{id} - Actualizar existente
  • DELETE /api/{recurso}/{id} - Eliminar

Códigos de Estado HTTP

  • 200 OK: Operación exitosa
  • 201 Created: Recurso creado exitosamente
  • 204 No Content: Eliminación exitosa
  • 400 Bad Request: Datos inválidos
  • 404 Not Found: Recurso no encontrado
  • 500 Internal Server Error: Error del servidor

Ejemplo de Uso

 // GET - Obtener todos los productos
 GET http://localhost:8080/api/products
 
 // GET - Obtener un producto por ID
 GET http://localhost:8080/api/products/1
 
 // POST - Crear un nuevo producto
 POST http://localhost:8080/api/products
 Content-Type: application/json
 {
   "name": "Nuevo Producto",
   "price": 99.99,
   "stock": 10,
   "categoryId": 1
 }
 
 // PUT - Actualizar un producto
 PUT http://localhost:8080/api/products/1
 Content-Type: application/json
 {
   "name": "Producto Actualizado",
   "price": 149.99,
   "stock": 20
 }
 
 // DELETE - Eliminar un producto
 DELETE http://localhost:8080/api/products/1
 

Anotaciones Principales

  • @RestController: Marca la clase como controlador REST
  • @RequestMapping: Define la ruta base del controlador
  • @GetMapping: Mapea peticiones GET
  • @PostMapping: Mapea peticiones POST
  • @PutMapping: Mapea peticiones PUT
  • @DeleteMapping: Mapea peticiones DELETE
  • @PathVariable: Extrae variables de la URL
  • @RequestBody: Mapea el cuerpo de la petición a un objeto
  • @Valid: Valida el objeto automáticamente

Modificaciones en Cascada

Las operaciones se propagan automáticamente gracias a la configuración de cascadas en las entidades JPA. Por ejemplo, al eliminar una categoría, se eliminan automáticamente todos sus productos asociados.

Version:
1.0.0
Author:
Proyecto JPA
See Also:
  • RestController
  • RequestMapping