API REST desarrollada con ASP.NET Core 8 para gestionar autenticacion, usuarios y productos.
- .NET 8
- ASP.NET Core Web API
- Entity Framework Core 8
- SQLite
- JWT Bearer Authentication
- Swagger / OpenAPI
- Arquitectura por capas: WebApi, Application, Domain e Infrastructure
- Patron Repository
- Casos de uso en Application
- Commands y Queries para Products
src/MiApp.WebApi: controladores HTTP, Swagger, autenticacion y configuracion general.src/MiApp.Application: DTOs, interfaces, casos de uso, commands y queries.src/MiApp.Domain: entidades y reglas de dominio.src/MiApp.Infrastructure: DbContext, repositorios, migraciones, SQLite y servicio JWT.
El flujo principal es:
Controller -> Use Case / Handler -> Repository -> DbContext -> SQLite
Los controladores no acceden directamente a la base de datos. La logica de aplicacion queda en MiApp.Application, y el acceso a datos queda en MiApp.Infrastructure.
Desde la raiz del proyecto:
dotnet restore
dotnet build MiApp.sln
dotnet run --project src/MiApp.WebApi/MiApp.WebApi.csproj --launch-profile httpsSwagger:
http://localhost:5284/swaggerhttps://localhost:7032/swagger
Se recomienda usar la URL HTTP durante la correccion para evitar problemas con el certificado local de desarrollo.
Endpoint:
POST /api/Auth/login
Body:
{
"email": "profesor@miapp.com",
"password": "MiApp2026!"
}La respuesta devuelve un token JWT. Para usar los endpoints protegidos, copiar el token y cargarlo en Swagger con el boton Authorize usando:
Bearer TOKEN_GENERADO
- Auth: login y generacion de JWT.
- Users: alta, consulta, modificacion y baja de usuarios.
- Products: alta, consulta, modificacion y baja de productos.
No se expone modulo de roles.
Auth:
POST /api/Auth/login
Users:
GET /api/UsersGET /api/Users/{id}POST /api/UsersPUT /api/Users/{id}DELETE /api/Users/{id}
Products:
GET /api/ProductsGET /api/Products/{id}POST /api/ProductsPUT /api/Products/{id}DELETE /api/Products/{id}
La API usa SQLite con el archivo miapp.db, configurado en src/MiApp.WebApi/appsettings.json.
Usuario inicial:
- Email:
profesor@miapp.com - Password:
MiApp2026!