156 lines
4.3 KiB
Markdown
156 lines
4.3 KiB
Markdown
# 🧙♂️ 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 |