Skip to content

vdriveros/courses_api

Repository files navigation

Courses API

API RESTful para la gestión de cursos, estudiantes e inscripciones.

Stack

  • Laravel: 12
  • Base de Datos: MySQL 8.0
  • Autenticación: Laravel Sanctum

Requisitos Previos

  • PHP >= 8.2
  • Composer
  • MySQL 8.0

Instalación

  1. Clonar el repositorio

    git clone https://github.com/vicriveros/courses_api.git
    cd courses_api
  2. Instalar dependencias

    composer install
  3. Configurar el archivo de entorno

    cp .env.example .env
  4. Configurar la base de datos en .env

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=courses_api
    DB_USERNAME=root
    DB_PASSWORD=
  5. Generar la clave de aplicación

    php artisan key:generate
  6. Ejecutar las migraciones y seeders

    php artisan migrate --seed
  7. Iniciar el servidor de desarrollo

    php artisan serve

    La API estará disponible en http://127.0.0.1:8000

Colección de Postman

Se incluye una colección de Postman para probar todos los endpoints de la API:

  • Archivo: Courses API.postman_collection.json
  • Importar en Postman: File → Import → Seleccionar el archivo JSON

La colección incluye ejemplos de todas las operaciones disponibles.

Autenticación

La API utiliza Laravel Sanctum para autenticación mediante tokens Bearer.

Registro de Usuario

POST /api/auth/register
Content-Type: application/json

{
  "name": "Admin User",
  "email": "admin@example.com",
  "password": "password123",
  "password_confirmation": "password123"
}

Login

POST /api/auth/login
Content-Type: application/json

{
  "email": "admin@example.com",
  "password": "password123"
}

Respuesta:

{
  "success": true,
  "message": "Inicio de sesión exitoso",
  "data": {
    "user": {
        "id": 1,
        "name": "Admin",
        "email": "admin@example.com",
        "email_verified_at": null,
        "created_at": "xxxxxxxxxxxxxxx",
        "updated_at": "xxxxxxxxxxxxxxx"
    },
    "access_token": "1|xxxxxxxxxxxxxxx",
    "token_type": "Bearer"
  }
}

Uso del Token

Incluir el token en el header Authorization de todas las peticiones protegidas:

Authorization: Bearer 1|xxxxxxxxxxxxxxxxxxxxx

Endpoints Principales

Estudiantes

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

Cursos

  • GET /api/courses - Listar todos los cursos
  • POST /api/courses - Crear un curso
  • GET /api/courses/{id} - Ver un curso específico
  • PUT /api/courses/{id} - Actualizar un curso
  • DELETE /api/courses/{id} - Eliminar un curso

Inscripciones

  • POST /api/enrollments - Inscribir un estudiante en un curso
  • GET /api/enrollments?student_id={id} - Listar cursos de un estudiante
  • GET /api/enrollments?course_id={id} - Listar estudiantes de un curso
  • DELETE /api/enrollments/{id} - Eliminar una inscripción

Ejemplos de Uso

Crear un Estudiante

POST /api/students
Authorization: Bearer {token}
Content-Type: application/json

{
  "name": "Juan Pérez",
  "email": "juan@example.com",
  "birthdate": "2000-05-15",
  "nationality": "Paraguaya"
}

Crear un Curso

POST /api/courses
Authorization: Bearer {token}
Content-Type: application/json

{
  "title": "Laravel Avanzado",
  "description": "Curso completo de Laravel",
  "start_date": "2026-01-15",
  "end_date": "2026-03-15"
}

Inscribir un Estudiante

POST /api/enrollments
Authorization: Bearer {token}
Content-Type: application/json

{
  "student_id": 1,
  "course_id": 1
}

Testing

Ejecutar las pruebas automatizadas:

php artisan test

Datos de Prueba

El seeder crea automáticamente:

  • 1 usuario administrador (admin@example.com / password123)
  • 3 estudiantes de ejemplo
  • 3 cursos de ejemplo
  • Inscripciones de ejemplo

Estructura de Respuestas

Todas las respuestas de la API siguen el formato:

Éxito:

{
  "success": true,
  "message": "Mensaje descriptivo",
  "data": { ... }
}

Error:

{
  "success": false,
  "message": "Mensaje de error",
  "errors": { ... }
}

Licencia

Este proyecto es de código abierto bajo la licencia MIT.

About

API para gestion de cursos online

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages