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
CategoryController- API REST para categoríasProductController- API REST para productosCustomerController- API REST para clientesOrderController- API REST para pedidos
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:
-
RestControllerRequestMapping
-
ClassesClassDescriptionControlador REST para la gestión de categorías (Capa de Presentación).Controlador REST para la gestión de clientes (Capa de Presentación).Controlador REST para la gestión de pedidos (Capa de Presentación).Controlador REST para la gestión de items de pedidos (Capa de Presentación).Controlador REST para la gestión de productos (Capa de Presentación).