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.
- ✅ 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
- PHP ≥ 8.1
- Composer
- Laravel 10+
- SQLite3
- Clonar el repositorio
git clone https://github.com/Mauro11F/laravel_api_crud.git
cd /laravel_api_crud- Instalar dependencias
composer install- Configurar entorno Copiar el archivo .env.example a .env:
cp .env.example .env- 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- Generar clave de aplicación
php artisan key:generate- Ejecutar migraciones
php artisan migrateapp/
├── 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
Los endpoints están definidos en routes/api.php. Ejemplo:
Route::get('/students', [studentController::class, 'index']);GET /api/students- Listar todos los estudiantesPOST /api/students- Crear nuevo estudianteGET /api/students/{id}- Mostrar estudiante específicoPUT /api/students/{id}- Actualizar estudiantePATCH /api/students/{id}- Actualizar parcialmente un estudianteDELETE /api/students/{id}- Eliminar estudiante
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
// ...Puedes probar los endpoints con REST Client, usando:
- Archivo
requests.httpEjemplo de contenido:
### Crear un Estudiante
POST http://localhost:8000/api/students
Content-Type: application/json
{
"name": "Rodolfo",
"email": "[email protected]",
"phone": "5544255488",
"language": "Laravel"
}