Este es un proyecto ASP.NET Core simple y preconfigurado, destinado a ser adoptado y cuyo objetivo es brindarle una ventaja en la creación de API tranquilas, basadas en la arquitectura de tres niveles.
Para mostrar algunas de sus funcionalidades, este proyecto viene con una implementación minimalista y ficticia de una aplicación de gestión de proyectos llamada Plantagoo.
Personalmente, he estado creando repetidamente proyectos API de ASP.NET Core desde cero durante los últimos meses. Aunque se sabe que la tecnología cambia y mejora rápidamente, sentí la necesidad de crear y publicar este proyecto para poder compartirlo, hacer referencia a él y desarrollarlo en el futuro.
Arquitectura de tres niveles, utilizando bibliotecas de clases por nivel
Servicios asincrónicos basados en DI que devuelven un objeto de respuesta genérico
Autenticación y autorización basadas en JWT
Hashing basado en PBKDF2
Manejo de errores globales basado en middleware
Puntos finales de API Restful, devolución de DTO y códigos de estado HTTP
Implementación de filtrado, paginación y clasificación para el punto final API, que devuelve listas de objetos
Implementación del control de versiones de terminales API
Acceso a datos basado en Entity Framework Core a través de entidades POCO
Mapeo de objeto a objeto basado en AutoMapper y optimización de consultas de bases de datos
Configurabilidad centrada en la seguridad de la cadena de conexión de la base de datos y los parámetros JWT a través de archivos "appsettings.json" basados en el entorno, secretos y/o variables de entorno
Pruebas de integración basadas en xUnit, que incluyen configuración, inicialización y desmontaje de una base de datos dedicada
Para que este proyecto esté en funcionamiento tal como está, no dude en seguir estos pasos:
SDK de .NET Core 3.1+
IDE (preferiblemente Visual Studio o Visual Studio Code)
Servidor MySQL 8.0.20+
Clonar este repositorio
En el directorio raíz, restaure los paquetes necesarios ejecutando:
dotnet restore
Abra los archivos appsettings.{environment}.json dentro del proyecto Plantagoo.API para personalizar la siguiente cadena de conexión según sus necesidades (consulte el paso 7 para obtener las credenciales):
server=localhost;Port=3306;database=apiSkeletonDb
Para fines de desarrollo, habilite el almacenamiento secreto ejecutando (si está acostumbrado a trabajar con variables de entorno, avance rápidamente al paso 7):
dotnet user-secrets init
Si está en Windows, vaya y abra el archivo %APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json .
Si está en Linux/macOS, vaya y abra el archivo ~/.microsoft/usersecrets/<user_secrets_id>/secrets.json .
Dentro de este archivo secrets.json, agregue las siguientes líneas para configurar sus parámetros JWT y extender la cadena de conexión de su base de datos agregando un nombre de usuario y contraseña:
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
Para un enfoque de código primero para crear la base de datos, ejecute el siguiente comando (asegúrese de que su directorio actual sea Plantagoo.Data ):
dotnet ef migrations add InitialCreate
Seguido por:
dotnet ef database update
A continuación, cree la solución ejecutando:
dotnet build
Una vez hecho esto, inicie la aplicación ejecutando:
dotnet run
Inicie https://localhost:5001/swagger/index.html en su navegador para ver la documentación Swagger de su API.
.NET Core 3.1
ASP.NET Core 3.1
Entidad Framework Core 3.1
AutoMapeador
espadachín
xUnidad