Authenticating, validating, caching, error handling, logging, documenting, testing and profiling are common features in web API, here are code samples to show how to implement them!
2. Historique
Créé en 2012, 3 ans après ASP.NET MVC
Supplante WCF Data Services (ou ADO.NET Data Services),et aujourd’hui
presque complètement WCF
Proche d’ASP.NET MVC, bien que distinct de se dernier
Unifiés dans ASP.NET Core
Popularité en constante augmentation, surtout depuis l’arrivée des frameworks
SPA
3. Le but de cette présentation
Présenter les différentes fonctionnalités pertinentes que l’on retrouve dans une
Web Api
Proposer un modèle de Web Api fonctionnel et prêt a l’emploi
Avec des exemples d’implémentation simples et facilement réutilisables et
extensibles
4. Ce que cette présentation n’a pas pour but
D’être la vérité absolue dans les choix techniques proposés (choix des librairies
tierces par exemple)
D’entrer dans le détail et toutes les possibilités de chaque fonctionnalité
5. Authentification et autorisation
La nécessité de restreindre l’accès à des données personnalisées et/ou sensibles
nous contraint à sécuriser une Web Api.
Cookies
JWT Bearer tokens
6. Validation
Lorsqu'un client envoie des données à une Web Api, on souhaite généralement
valider les données et gérer les erreurs de validation.
ModelState et DataAnnotations built-in
FluentValidation, framework de validation
7. Gestion des erreurs
Quand une erreur critique arrive dans une Web Api, on souhaite généralement
gérer l’erreur et contrôler la réponse au client de manière appropriées avec une
réponse HTTP formatée
Filtre d’actions MVC
Middleware ASP.NET Core
8. Journaliser les erreurs et autres infos
Souvent négligée, la journalisation des erreurs et d’autres informations en cas de
bug dans le programme est une fonctionnalité essentielle dans une Web Api.
Log4Net
Nlog
Logger built-In de .NET Core
Application Insights
Serilog
9. Tests unitaires et d’intégration
Encore fois souvent négligés, les tests unitaires permettent de vérifier qu’une
implémentation reste conforme à la règle de fonctionnement attendue, prévenant
des régressions en cas d’évolution du programme.
Les tests d’intégration eux, servent à vérifier ce que les tests unitaires ne peuvent
faire: tester le fonctionnement de chaque couche logicielles entre elles.
MSTest, NUnit, Rhino.Mocks, Moq
FluentValidation, XUnit, Nsubstitute, TestServer
10. Documenter
Fournir la liste des services qui sont offerts, avec pour chacun, comment les
appeler et la structure de la réponse qui est retournée est également une
fonctionnalité essentielle pour une Web Api.
Swagger avec NSwag
Swagger avec Swashbuckle
Rappel: Le framework Swagger pour ASP.NET Core est une implémentation open
source qui repose sur la spécification OpenAPI née en 2010.
11. Profiler et cacher
Il est probable que l’on s’intérroge sur les performances d’une Web Api.
Pour se faire on peut profiler l’exécution de cette dernière et mettre si nécessaire
des données en cache (redondante et/ou longue a obtenir)
Miniprofiler pour ASP.NET Core
Cache de mémoire et cache de réponse HTTP