Skip to content
imirandaPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

API RESTful de Productos - Laravel 11

API RESTful para gestión de productos con soporte multi-divisa.

Stack Tecnológico

  • Laravel 11.x
  • PHP 8.2+
  • MySQL 8.0+
  • PHPUnit para testing

Instalación

# 1. Instalar dependencias
composer install

# 2. Configurar entorno
cp .env.example .env
php artisan key:generate

# 3. Configurar base de datos en .env
DB_DATABASE=beos_20260106
DB_USERNAME=root
DB_PASSWORD=

# 4. Ejecutar migraciones (creará la BD si confirma con 'yes')
php artisan migrate

# 5. Ejecutar seeder
php artisan db:seed

# 6. Iniciar servidor
php artisan serve

Testing

php artisan test

Documentación

Swagger UI

Interfaz interactiva: http://localhost:8000/api/documentation

Colecciones

  • Postman: postman_collection.json
  • Insomnia: insomnia_collection.json

Endpoints

Método Endpoint Descripción
GET /api/products Listar productos
POST /api/products Crear producto
GET /api/products/{id} Obtener producto
PUT /api/products/{id} Actualizar producto
DELETE /api/products/{id} Eliminar producto
GET /api/products/{id}/prices Listar precios
POST /api/products/{id}/prices Crear precio en divisa

Estructura

app/
├── Http/
│   ├── Controllers/Api/
│   │   ├── ProductController.php
│   │   └── ProductPriceController.php
│   ├── Requests/
│   │   ├── StoreProductRequest.php
│   │   ├── UpdateProductRequest.php
│   │   └── StoreProductPriceRequest.php
│   └── Resources/
│       ├── ProductResource.php
│       ├── ProductPriceResource.php
│       └── CurrencyResource.php
└── Models/
    ├── Product.php
    ├── ProductPrice.php
    └── Currency.php

database/
├── migrations/ (3 tablas: currencies, products, product_prices)
├── seeders/ (datos de ejemplo)
└── factories/ (generación de datos para tests)

Características Implementadas

  • CRUD completo de productos
  • Gestión de precios multi-divisa
  • Validación con Form Requests
  • Transformación con API Resources
  • Soft Deletes
  • Paginación
  • Filtros y búsqueda
  • Eager loading (prevención N+1)
  • Transacciones de BD
  • Manejo de errores
  • Testing completo

Base de Datos

Tablas:

  • currencies - Catálogo de divisas (USD, EUR, MXN, COP, ARS)
  • products - Productos con precio base
  • product_prices - Precios por divisa

Relaciones:

  • Product → Currency (belongsTo)
  • Product → ProductPrice[] (hasMany)
  • ProductPrice → Currency (belongsTo)

Notas Técnicas

Validación

Se utiliza Form Requests para separar la lógica de validación del controlador.

Transformación

API Resources proporcionan una capa de transformación consistente para las respuestas JSON.

Optimización

Eager loading en las relaciones para prevenir el problema N+1 de consultas.

Seguridad

  • Validación estricta de inputs
  • Eloquent previene SQL injection
  • Mass assignment protection
  • Foreign key constraints

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages