API REST desarrollada en ASP.NET Core 8, diseñada para gestionar incidentes y sus comentarios asociados.
Incluye middleware de excepciones, logging técnico, Entity Framework Core con SQLite y pruebas unitarias con xUnit.
- ASP.NET Core 8 (Web API)
- Entity Framework Core 8 + SQLite
- EF Core InMemory para pruebas
- xUnit para pruebas unitarias
- Inyección de dependencias (DI)
- Logging con ILogger
- Swagger / OpenAPI
Reciben solicitudes HTTP y delegan la lógica a los servicios.
Separan los modelos expuestos al cliente de las entidades de base de datos.
Encapsulan la lógica principal:
IncidentServiceCommentService
AppDbContext- Configuración de EF Core
- DbSets de
IncidentsyComments
Representan las entidades persistidas:
IncidentComment
Middleware personalizado que:
- Intercepta errores no controlados
- Registra el error
- Devuelve un JSON consistente
Ejemplo de respuesta:
{
"error": "Ha ocurrido un error inesperado.",
"traceId": "0H123ABC..."
}Se utiliza ILogger<T> para registrar:
- Creación, actualización y eliminación de recursos
- Advertencias por recursos inexistentes
- Errores procesados por el middleware
Implementadas en el proyecto IncidentManagement.Tests usando:
- xUnit
- Entity Framework Core InMemory
- ✔ Crear incidente (camino feliz)
- ✔ Error al actualizar incidente inexistente
- ✔ Crear comentario asociado
- ✔ Error si el incidente no existe
Todas las pruebas pasan exitosamente.
Se utiliza SQLite.
Cadena de conexión en Program.cs:
options.UseSqlite("Data Source=incidents.db")Migraciones:
Add-Migration InitialCreate
Update-Database
dotnet restore
dotnet ef database update
dotnet run
https://localhost:7045/swagger
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/Incidents |
Listar incidentes |
| GET | /api/Incidents/{id} |
Obtener por ID |
| POST | /api/Incidents |
Crear incidente |
| PUT | /api/Incidents/{id} |
Actualizar incidente |
| DELETE | /api/Incidents/{id} |
Eliminar incidente |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/Incidents/{id}/comments |
Obtener comentarios de un incidente |
| POST | /api/Incidents/{id}/comments |
Agregar comentario |
IncidentManagement.API/
│
├── Controllers/
├── Data/
├── Dtos/
├── Middleware/
├── Models/
├── Services/
└── Program.cs
Este proyecto implementa:
- Buenas prácticas de arquitectura
- Manejo robusto de errores
- Logging técnico
- Pruebas unitarias reales
- Persistencia con EF Core
- Documentación con Swagger
Listo para revisión o ampliación.