Il s'agit d'un projet ASP.NET Core simple et préconfiguré, destiné à être adopté et visant à vous donner une longueur d'avance dans la création d'API reposantes, basées sur l'architecture à trois niveaux.
Pour présenter certaines de ses fonctionnalités, ce projet s'accompagne d'une implémentation minimaliste et fictive d'une application de gestion de projet appelée Plantagoo.
Personnellement, j'ai créé à plusieurs reprises des projets d'API ASP.NET Core à partir de zéro au cours des derniers mois. Bien que la technologie évolue et s'améliore rapidement, j'ai ressenti le besoin de créer et de publier ce projet pour pouvoir le partager, le référencer et le développer à l'avenir.
Architecture à trois niveaux, utilisant des bibliothèques de classes par niveau
Services asynchrones basés sur DI, renvoyant un objet de réponse générique
Authentification et autorisation basées sur JWT
Hachage basé sur PBKDF2
Gestion globale des erreurs basée sur un middleware
Points de terminaison d'API restful, renvoyant les DTO et les codes d'état HTTP
Implémentation du filtrage, de la pagination et du tri pour le point de terminaison de l'API, qui renvoie des listes d'objets
Implémentation du versioning des points de terminaison de l'API
Entity Framework Accès aux données basé sur le noyau via des entités POCO
Mappage objet à objet basé sur AutoMapper et optimisation des requêtes de base de données
Configurabilité axée sur la sécurité de la chaîne de connexion à la base de données et des paramètres JWT via des fichiers « appsettings.json » basés sur l'environnement, des secrets et/ou des variables d'environnement
Tests d'intégration basés sur xUnit, y compris la configuration, l'amorçage et le démontage de la base de données dédiée
Pour lancer ce projet tel quel, n'hésitez pas à suivre ces étapes :
Kit de développement logiciel .NET Core 3.1+
IDE (de préférence Visual Studio ou Visual Studio Code)
Serveur MySQL 8.0.20+
Cloner ce référentiel
Dans le répertoire racine, restaurez les packages requis en exécutant :
dotnet restore
Ouvrez les fichiers appsettings.{environment}.json dans le projet Plantagoo.API pour personnaliser la chaîne de connexion suivante selon vos besoins (voir l'étape 7 pour les informations d'identification) :
server=localhost;Port=3306;database=apiSkeletonDb
À des fins de développement, activez le stockage secret en exécutant (si vous avez l'habitude de travailler avec des variables d'environnement, passez rapidement à l'étape 7) :
dotnet user-secrets init
Si vous êtes sous Windows, accédez au fichier %APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json et ouvrez-le.
Si vous êtes sous Linux/macOS, accédez à et ouvrez le fichier ~/.microsoft/usersecrets/<user_secrets_id>/secrets.json .
Dans ce fichier secrets.json, ajoutez les lignes suivantes pour définir vos paramètres JWT et étendre la chaîne de connexion à votre base de données en ajoutant un nom d'utilisateur et un mot de passe :
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
Pour une approche Code-First pour créer la base de données, exécutez la commande suivante (assurez-vous que votre répertoire actuel est Plantagoo.Data ) :
dotnet ef migrations add InitialCreate
Suivi de:
dotnet ef database update
Ensuite, créez la solution en exécutant :
dotnet build
Une fois cela fait, lancez l'application en exécutant :
dotnet run
Lancez https://localhost:5001/swagger/index.html dans votre navigateur pour afficher la documentation Swagger de votre API
.NET Core 3.1
ASP.NET Core 3.1
Entité Framework Core 3.1
Mappeur automatique
Swashbuckle
xUnité