# 🧙‍♂️ Liber_Incantamentum > API RESTful de gestion de sortilèges développée en .NET 9 avec Clean Architecture. --- ## 🎯 Objectif Développer une API professionnelle respectant les bonnes pratiques modernes : - Clean Architecture modulaire - 5 routes REST (GET, POST, PUT, PATCH, DELETE) - Sécurité minimale via token ou clé API - Tests unitaires et d’intégration - GitFlow avec issues & PR - Documentation complète avec Postman --- ## 🛠️ Stack technique | Composant | Technologie | |------------------|----------------------------------| | Langage | C# (.NET 9) | | Framework | ASP.NET Core Web API | | ORM | Entity Framework Core | | Authentification | Middleware + Header `X-API-KEY` | | Tests unitaires | xUnit, Moq, FluentAssertions | | Couverture | Coverlet | | Documentation | Postman + README.md | | Gestion Git | GitFlow | --- ## 📦 Architecture du projet ``` Liber_Incantamentum/ │ ├── src/ │ ├── Liber_Incantamentum.Api/ → API (controllers, middlewares) │ ├── Liber_Incantamentum.Application/ → Use cases (logique métier) │ ├── Liber_Incantamentum.Domain/ → Entités, Enums, Interfaces │ └── Liber_Incantamentum.Infrastructure/ → Persistance (ex: EF Core) │ └── tests/ ├── Liber_Incantamentum.Tests.Unit/ → Tests unitaires └── Liber_Incantamentum.Tests.Integration/→ Tests d’intégration & sécurité ``` --- ## 🔁 Cycle de développement 1. Création des issues dans Gitea 2. Développement par fonctionnalité dans une branche `feature/{id-nom}` 3. Écriture de tests unitaires 4. PR vers `develop` + revue par développeur senior 5. Correction ou validation 6. Merge dans `develop` 7. Non-régression (tests, sécurité, fonctionnement) 8. Merge vers `master` après validation 9. Seconde non-régression --- ## 🔐 Sécurité (clé API) Toutes les routes sont protégées par une clé API : - Clé attendue dans le header `X-API-KEY` - Middleware qui bloque si la clé est absente ou invalide - Code de réponse HTTP : - `401 Unauthorized` si clé manquante - `403 Forbidden` si clé invalide --- ## 🌐 Routes REST | Méthode | Route | Description | |---------|-------------------|-------------------------------------| | GET | `/spells` | Lister tous les sortilèges | | GET | `/spells/{id}` | Obtenir un sortilège spécifique | | POST | `/spells` | Créer un nouveau sortilège | | PUT | `/spells/{id}` | Remplacer un sortilège | | PATCH | `/spells/{id}` | Modifier partiellement un sortilège | | DELETE | `/spells/{id}` | Supprimer un sortilège | --- ## 🧪 Tests attendus - ✅ Tests unitaires avec xUnit - ✅ Mocks avec Moq - ✅ Assertions expressives via FluentAssertions - ✅ Couverture via Coverlet - ✅ Tests d'intégration du middleware de sécurité --- ## 🧪 Non-régression via Postman - Une collection Postman est utilisée pour tester toutes les routes - Elle est exécutée à chaque release (`develop` puis `master`) --- ## 🔀 GitFlow utilisé | Branche | Description | |---------------|--------------------------------------| | `master` | Code de production stable | | `develop` | Code en cours de développement | | `feature/*` | Nouvelles fonctionnalités | | `release/*` | Préparation d’une version stable | | `hotfix/*` | Corrections urgentes sur `master` | --- ## ▶️ Lancer le projet ```bash # Compilation dotnet build # Lancer l’API dotnet run --project src/Liber_Incantamentum.Api ``` --- ## 🧪 Lancer les tests ```bash dotnet test ``` --- ## ✅ Fichiers présents à la racine - `Liber_Incantamentum.sln` — Solution .NET - `.editorconfig` — Convention de code - `.gitignore` — Fichiers à ignorer - `README.md` — Documentation du projet --- ## ✨ Technologies utilisées - C# / .NET 9 - ASP.NET Core Web API - xUnit / Moq / FluentAssertions / Coverlet - Postman - Git + GitFlow