Skip to content

Api para la gestion de de un gimnasio, hecha con ASP.NET CORE (Web Api) y Entity Framework Core.

Notifications You must be signed in to change notification settings

JOjeda210/Gym-API

Repository files navigation

🏋️ Gimnasio API — Documentación Técnica

Descripción profesional y guía de uso del proyecto GimnasioApi.


Resumen

GimnasioApi es una API RESTful construida con ASP.NET Core 8 y Entity Framework Core para la gestión de los recursos principales de un gimnasio (miembros, clases, instructores y asistencias). Está diseñada con una arquitectura en capas para facilitar la mantenibilidad, las pruebas y la evolución.


Objetivos

  • Proveer un backend escalable y fácil de extender para operaciones CRUD.
  • Aplicar buenas prácticas: separación de responsabilidades, DTOs, validaciones y manejo de errores centralizado.
  • Facilitar despliegue y operaciones mediante migraciones EF Core y configuración mediante appsettings.json.

Tecnologías

  • Framework: ASP.NET Core 8 (.NET 8)
  • ORM: Entity Framework Core
  • Base de datos: SQL Server
  • Lenguaje: C# 12
  • Migraciones: dotnet ef

Estructura del proyecto

  • Controllers/ — Endpoints HTTP (controladores por recurso).
  • Services/ — Lógica de negocio y orquestación entre capa API y persistencia.
  • DTOs/ — Objetos de transferencia que definen contratos públicos de la API.
  • Models/ — Entidades de dominio y mapeo a BD.
  • GimnasioDbContext.csDbContext de EF Core.
  • Migrations/ — Migraciones generadas por EF Core.
  • Program.cs — Configuración de la aplicación e inyección de dependencias.
  • appsettings.json — Configuración, incluida la cadena de conexión.

Principales responsabilidades por capa

  • Controladores: validar modelos de entrada ([ApiController] + validación automática), mapear a DTOs y devolver respuestas HTTP adecuadas.
  • Servicios: aplicar reglas de negocio, validaciones adicionales (existencia de relaciones, unicidad), y acceso directo a GimnasioDbContext.
  • DbContext/Models: definir el modelo relacional y administrar transacciones mediante EF Core.

Endpoints principales

Base: /api

  • GET /api/miembros — Listar todos los miembros.
  • GET /api/miembros/{id} — Obtener miembro por id.
  • POST /api/miembros — Crear miembro.
  • PUT /api/miembros/{id} — Actualizar miembro.
  • DELETE /api/miembros/{id} — Eliminar miembro.

(Analogía: existen controladores para clases, instructores, asistencias y autenticación según la implementación del proyecto.)


DTOs relevantes y validaciones

Ejemplos en DTOs/:

  • MiembroForCreationDTO, MiembroForUpdateDTO, MiembroDTO — contratan entradas y salidas para Miembro.
  • ClaseCreacionDTO — contiene [Required], [StringLength(50)] para NombreClase, [Range(1,99)] para Capacidad y InstructorId requerido.

Se recomienda mantener las validaciones de atributos y complementar con validaciones de negocio en los servicios (p. ej. verificar que InstructorId exista antes de crear una Clase).


Configuración y despliegue local

  1. Clonar el repositorio:

    git clone <URL_PROYECTO>
    cd GimnasioApi
  2. Configurar la cadena de conexión en appsettings.json (usar secretos / variables de entorno en producción):

    "ConnectionStrings": {
      "DefaultConnection": "Server=TU_SERVIDOR;Database=GimnasioDb;User Id=USUARIO;Password=CONTRASEÑA;TrustServerCertificate=True;"
    }
  3. Crear / actualizar la base de datos con migraciones:

    dotnet ef database update
  4. Ejecutar la aplicación:

    dotnet run

Por defecto la API estará en https://localhost:5001 o http://localhost:5000 salvo configuración distinta.


Migraciones

  • Añadir una migración:

    dotnet ef migrations add NombreDeLaMigracion
  • Aplicar migraciones:

    dotnet ef database update

Asegúrate de que la DefaultConnection esté correctamente configurada antes de aplicar migraciones.


Ejemplos de peticiones

Crear miembro (POST /api/miembros):

{
  "nombre": "Juan Pérez",
  "email": "juan.perez@example.com"
}

Respuesta exitosa (201 Created) con la entidad creada o ubicación en el header Location.

Crear clase (POST /api/clases) usando ClaseCreacionDTO:

{
  "nombreClase": "Yoga Básico",
  "capacidad": 20,
  "instructorId": 2
}

Manejo de errores y códigos HTTP

  • 400 Bad Request — solicitudes con validaciones fallidas (model binding / atributos de validación).
  • 404 Not Found — recurso no existe.
  • 201 Created — creación exitosa.
  • 200 OK — respuestas exitosas con payload.
  • 500 Internal Server Error — errores no controlados (registrar y ocultar detalles en producción).

About

Api para la gestion de de un gimnasio, hecha con ASP.NET CORE (Web Api) y Entity Framework Core.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages