14. Minimal APIs et contrôleurs
Sections
Réglages de lecture
Voix naturelle enregistrée pour ce cours, la même dans tous les navigateurs.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
Code et termes techniques en anglais
Désactivé : la voix de la page lit tout, sans pause entre deux voix.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
D’autres voix : Microsoft Edge propose des voix naturelles en ligne, et Windows (Paramètres › Heure et langue › Voix), macOS et Android en installent d’autres.
Les Minimal APIs et les contrôleurs publient tous des endpoints via endpoint routing. Le choix dépend des besoins de composition, pas d’un slogan.
Le binding est un contrat public
Section intitulée « Le binding est un contrat public »Un handler lie directement route, query, headers, services et body. Il faut rendre la source explicite dès qu’une ambiguïté devient dangereuse.
without key: 400; with key: 200 {"root":"C","notes":7}TypedResults conserve des types concrets pour tests et OpenAPI. Un endpoint filter peut décorer une famille de handlers ; l’autorisation reste la responsabilité du système d’autorisation et des métadonnées d’endpoint.
Là où les contrôleurs restent profonds
Section intitulée « Là où les contrôleurs restent profonds »Les contrôleurs apportent conventions, model binding, filtres et validation pour les grandes APIs. Le programme mappe les deux styles dans la même table :
controller: 200 {"symbol":"Cmaj7","characters":5}Ne pas dupliquer la policy : chaque transport appelle la même seam applicative.
Streaming
Section intitulée « Streaming »IAsyncEnumerable<T> permet au serializer de consommer les éléments de façon asynchrone. Les proxies peuvent néanmoins bufferiser ; pour une livraison progressive, mesurer toute la chaîne et choisir NDJSON, SSE ou SignalR selon le contrat.
Exécuter la preuve
Section intitulée « Exécuter la preuve »dotnet run --project code/csharp-advanced/Advanced -c Release -- l14La sortie vérifiée est expected/l14.txt.
Exercices
Section intitulée « Exercices »- Ajouter une valeur
notesnégative et un contrat d’erreur portable. - Exposer la même opération par Minimal API et contrôleur sans dupliquer la policy.
- Annuler le stream après le premier élément et prouver que la source observe la cancellation.
Solutions
- Rejeter à la frontière avec un problem details stable et tester statut, media type et payload.
- Lier les entrées vers une commande/requête unique, appeler un seul handler, puis mapper le résultat dans chaque adapter.
- Passer
RequestAborted, fermer la réponse côté client et vérifier lefinallyou la sonde de cancellation.