Minimal APIs + EF Core : une API .NET 8 propre
Program.cs .
Découper avec des route groups
app.MapGet dans le Program.cs . La parade tient en un mot : `MapGroup` . Chaque ressource a son groupe, avec son préfixe, ses filtres et ses métadonnées, défini dans une méthode d'extension dédiée :
Program.cs se résume alors à app.MapTodos(); — un point d'entrée par ressource, le reste vit dans des fichiers cohérents.
DbContext et migrations
DbContext via AddDbContext , on modélise dans OnModelCreating , et surtout on ne laisse jamais le schéma dériver à la main : chaque changement passe par une migration versionnée.
dotnet ef migrations add InitialCreate , et on l'applique au démarrage avec db.Database.MigrateAsync() — jamais EnsureCreated , qui court-circuite tout l'historique. La doc officielle détaille le workflow dans le guide EF Core migrations .
Résultats typés et validation
IActionResult opaque, on retourne un union de résultats typés : la signature documente les codes HTTP possibles, et OpenAPI les expose automatiquement.
Results<Created<Todo>, ValidationProblem> est auto-documentant : pas besoin d'attributs [ProducesResponseType] redondants.
Garder le tout testable
AppDbContext sur le provider in-memory ou SQLite, on appelle le handler, on inspecte le TypedResults . Pour les tests d'intégration de bout en bout, WebApplicationFactory<T> monte l'application complète en mémoire et permet de taper les vrais endpoints.
Une Minimal API n'est pas une API au rabais. Bien découpée en groupes et en résultats typés, elle expose moins de cérémonie pour plus de garanties — et c'est exactement ce qu'on veut d'un framework moderne.