4.3 KiB
4.3 KiB
🧙♂️ 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
- Création des issues dans Gitea
- Développement par fonctionnalité dans une branche
feature/{id-nom} - Écriture de tests unitaires
- PR vers
develop+ revue par développeur senior - Correction ou validation
- Merge dans
develop - Non-régression (tests, sécurité, fonctionnement)
- Merge vers
masteraprès validation - 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 Unauthorizedsi clé manquante403 Forbiddensi 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 (
developpuismaster)
🔀 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
# Compilation
dotnet build
# Lancer l’API
dotnet run --project src/Liber_Incantamentum.Api
🧪 Lancer les tests
dotnet test
✅ Fichiers présents à la racine
Liber_Incantamentum.sln— Solution .NET.editorconfig— Convention de code.gitignore— Fichiers à ignorerREADME.md— Documentation du projet
✨ Technologies utilisées
- C# / .NET 9
- ASP.NET Core Web API
- xUnit / Moq / FluentAssertions / Coverlet
- Postman
- Git + GitFlow