Skip to content

Mauro11F/laravel_api_crud

Repository files navigation

🚀 Descripción del Proyecto

Este proyecto es una API RESTful desarrollada en Laravel que implementa operaciones CRUD (Create, Read, Update, Delete) utilizando el patrón MVC. Incluye validación de datos con el sistema propio de Laravel y está configurado para usar SQLite como base de datos.

✨ Características principales

  • ✅ Estructura MVC limpia y organizada
  • 🔄 Operaciones CRUD completas
  • ✔️ Validación de datos con Illuminate\Support\Facades\Validator
  • 🗃️ Base de datos SQLite configurada
  • 📡 Endpoints REST bien definidos
  • 📊 Pruebas mediante archivo requests.http

🛠 Requisitos del sistema

  • PHP ≥ 8.1
  • Composer
  • Laravel 10+
  • SQLite3

⚙️ Configuración inicial

  1. Clonar el repositorio
git clone https://github.com/Mauro11F/laravel_api_crud.git
cd /laravel_api_crud
  1. Instalar dependencias
composer install
  1. Configurar entorno Copiar el archivo .env.example a .env:
cp .env.example .env
  1. Configurar base de datos SQLite Crear archivo de base de datos:
bash
touch database/database.sqlite

Configurar .env:

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/your/project/database/database.sqlite
  1. Generar clave de aplicación
php artisan key:generate
  1. Ejecutar migraciones
php artisan migrate

🏗 Estructura del proyecto

app/
├── Http/
│   ├── Controllers/      # Controladores para los endpoints API
|── Models/      # Modelo de la tablas para la API
database/
├── migrations/           # Archivos de migración
├── seeders/              # Seeders para datos de prueba
└── database.sqlite       # Base de datos SQLite
routes/
├── api.php               # Rutas de la API
tests/                    # Pruebas automatizadas
requests.http             # Archivo para probar endpoints

📡 Endpoints de la API

Los endpoints están definidos en routes/api.php. Ejemplo:

Route::get('/students', [studentController::class, 'index']);

Ejemplo de endpoints:

  • GET /api/students - Listar todos los estudiantes
  • POST /api/students - Crear nuevo estudiante
  • GET /api/students/{id} - Mostrar estudiante específico
  • PUT /api/students/{id} - Actualizar estudiante
  • PATCH /api/students/{id} - Actualizar parcialmente un estudiante
  • DELETE /api/students/{id} - Eliminar estudiante

✅ Validación de datos

Se utiliza el validador de Laravel. Ejemplo en un controlador:

$validator = Validator::make($request->all(), [
    'name' => 'required|max:255', // "required -> este capo es requerido y de maximo 255 caracteres"
    'email' => 'required|email|unique:student', // el " |email" indica que el campo debe ser un email, unico y no repetido en la DB
    'phone' => 'required|digits:10', // es requerido y debe tener 10 digitos
    'language' => 'required|in:Python,Laravel,PHP' // es requerido y debe ser uno de los siguientes: Python, Laravel o PHP
]);

if($validator->fails())
{
    $data = [
        'message' => 'Error de validacion de los datos',
        'errors' => $validator->errors(), // Devuelve los errores de validacion
        'status' => 400
    ];

    return response()->json($data, 400);
}

// Si todos los datos requeridos son validos entonces creamos un "Estudiante" con el Modelo
// ...

🔍 Probando la API

Puedes probar los endpoints con REST Client, usando:

  1. Archivo requests.http Ejemplo de contenido:
### Crear un Estudiante
POST http://localhost:8000/api/students
Content-Type: application/json

{
   "name": "Rodolfo",
   "email": "[email protected]",
   "phone": "5544255488",
   "language": "Laravel"
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages