Voici quelques cas d’utilisation courants des filtres d’action.
Cas d’utilisation
Authentification et autorisation
Vous pouvez implémenter des filtres d’action sur la logique d’authentification et d’autorisation. Le résultat d’un tel cas d’utilisation garantit que seuls les utilisateurs autorisés peuvent accéder à certaines actions ou certains contrôleurs.
|
|
Ce qui précède concerne spécifiquement .NET Framework, je vais donc vous donner également la version .NET Core :
|
|
Journalisation et diagnostics
Vous pouvez également utiliser des filtres d’action pour consigner les détails de la requête et de la réponse HTTP, ce qui peut être utile pour le débogage.
|
|
Dans le style .NET Core, le code change légèrement. Les types de paramètres passent de HttpActionContext et HttpActionExecutedContext (.NET Framework) à ActionExecutingContext et ActionExecutedContext (ASP.NET Core).
L’enregistrement et l’application fonctionnent presque de la même manière, mais peuvent utiliser DI et ServiceFilter ou TypeFilter pour les filtres injectés.
|
|
Un cas d’utilisation concret serait d’enregistrer le temps écoulé pour traiter la requête en démarrant un observateur sur OnActionExecuting et en l’arrêtant sur OnActionExecuted.
Gestion des exceptions
Si vous devez gérer les exceptions de manière globale, les filtres d’action permettent une approche cohérente de la gestion des erreurs sur plusieurs contrôleurs ou actions.
|
|
Avec .NET Core, cela ressemblerait à ceci :
|
|
Mise en cache
Les filtres d’action peuvent gérer les stratégies de mise en cache en ajoutant des en-têtes de mise en cache à la réponse ou en implémentant des mécanismes de mise en cache côté serveur.
Le code ressemble exactement à l’exemple de journalisation.
Validation des entrées
Un dernier cas d’utilisation courant est la validation des données de la requête entrante avant l’exécution de la méthode d’action.
Le code ressemble exactement à l’exemple de journalisation.
Pour en savoir plus sur le sujet
Pour la documentation Microsoft, voici quelques articles qui vous permettront d’approfondir le sujet avec .NET Framework :
- Gestionnaires de messages HTTP dans API Web ASP.NET.
- Using Action Filters in ASP.NET Web API
- Gestion globale des erreurs dans API Web ASP.NET 2
Pour .NET Core, allez lire :
Comment les utiliser dans les contrôleurs ?
Pour utiliser les filtres d’action dans les contrôleurs ASP.Net WebAPI, vous pouvez les appliquer de plusieurs façons :
Au niveau de la méthode d’action
Vous pouvez appliquer un filtre d’action à une méthode d’action spécifique en décorant la méthode avec l’attribut de filtre.
|
|
Au niveau du contrôleur
Vous pouvez appliquer un filtre d’action à toutes les méthodes d’action d’un contrôleur en décorant la classe du contrôleur avec l’attribut filtre.
|
|
Au niveau de l’application (sur tous les contrôleurs)
Vous pouvez appliquer un filtre d’action à tous les contrôleurs et actions de votre application WebAPI.
Pour ce faire, enregistrez le filtre dans la classe WebApiConfig.
|
|
Ce qui précède fonctionne pour les applications .NET Framework. Sur .NET Core, vous le feriez dans la méthode ConfigureServices :
|
|
ou dans .NET 6+ (Program.cs) :
|
|
Conclusion
Les filtres d’action dans ASP.NET Web API et .NET Core sont un mécanisme polyvalent qui permet aux développeurs de gérer de manière centralisée les problèmes transversaux, tels que l’authentification, la journalisation, la gestion des exceptions, la mise en cache et la validation des entrées dans les contrôleurs et les actions.
En configurant ces filtres au niveau de l’action, du contrôleur ou de la portée globale, le code de l’application reste propre et facile à maintenir, tandis que les tâches d’infrastructure cruciales sont gérées de manière cohérente.
L’utilisation des filtres d’action améliore la sécurité, la fiabilité et les performances, ce qui les rend essentiels pour un développement API robuste dans les environnements .NET modernes.
Suivez-moi !
Merci d’avoir lu cet article. Assurez-vous de me suivre sur X, de vous abonner à ma publication Substack et d’ajouter mon blog à vos favoris pour ne pas manquer les prochains articles.
Photo de Lucas Andrade.