12. Le pipeline middleware
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.
Un middleware ASP.NET Core est du contrôle de flux imbriqué. Le code avant next s’exécute à l’aller ; le code après next, au retour. L’ordre d’enregistrement est donc un comportement observable.
L’oignon est exécutable
Section intitulée « L’oignon est exécutable »GET /ok: 200; outer:before -> endpoint -> outer:afterLe gate court-circuite volontairement /blocked :
GET /blocked: 429; outer:before -> gate:short-circuit -> outer:afterL’endpoint est absent car le gate n’appelle pas next. Le middleware externe termine néanmoins son chemin de réponse.
Des règles d’ordre qui comptent
Section intitulée « Des règles d’ordre qui comptent »- le handler d’exception doit envelopper le code qu’il convertit ;
- les forwarded headers précèdent les lecteurs du scheme, host ou client IP ;
- le routing choisit l’endpoint avant l’autorisation fondée sur ses métadonnées ;
- l’authentification établit le principal avant l’autorisation ;
- un
Runterminal achève sa branche.
Map branche sur un chemin, MapWhen sur un prédicat. Une branche n’est ni un nouveau process ni une frontière de confiance.
Exécuter la preuve
Section intitulée « Exécuter la preuve »dotnet run --project code/csharp-advanced/Advanced -c Release -- l12La sortie vérifiée est expected/l12.txt.
Exercices
Section intitulée « Exercices »- Placer le handler d’exception après un endpoint qui lance une exception.
- Ajouter un correlation ID et décider comment traiter une valeur fournie par le client.
- Ajouter une branche
/adminet prouver que l’autorisation s’y exécute.
Solutions
- Il ne peut envelopper que les composants enregistrés après lui ; il faut le déplacer plus tôt.
- Valider l’entrée, la garder seulement comme baggage non fiable et générer l’ID serveur utilisé dans les logs.
- Mettre l’autorisation dans la branche pertinente ou utiliser les métadonnées d’endpoint. Le chemin seul n’accorde aucune autorité.