Créer et déployer une API REST avec ASP.NET
Théorisé en 2000 par Roy Fielding dans sa thèse de doctorat, REST est l'approche choisie par une majorité d'organisations pour développer des API et ainsi échanger avec d'autres applications par HTTP. Face à ce succès, Microsoft a fait évoluer ASP.NET pour en faire le standard de développement d'APIs REST en .NET. ASP.NET Core a marqué un tournant en proposant une alternative standalone au déploiement sous IIS.
Mais si la prise en main du framework est facile, la réalisation d'une API dans les règles de l'art nécessite de connaitre de nombreuses subtilités, tant au niveau des bonnes pratiques de conception d'une API qu'au niveau d'ASP.NET. Ce cours vous permettra de les découvrir et de les mettre en oeuvre.
(10,5 heures)
Développeurs et développeuses .NET (C#), architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- concevoir une API REST en appliquant les bonnes pratiques;
- configurer une application ASP.NET;
- utiliser le serveur web embarqué Kestrel;
- créer des endpoints REST avec ASP.NET;
- sécuriser une API REST ASP.NET avec JWT;
- livrer une API REST ASP.NET sous forme d'image OCI et la déployer.
Prérequis
Ce cours demande une connaissance solide des bases de la programmation C# (principes de la programmation orientée objet, types génériques, custom attribute, expressions lambda) et une habitude de travailler avec Visual Studio, VsCode ou Rider.
Méthodes pédagogiques
- Explication, pour chaque concept, du problème qu'il prétend résoudre.
- Mise en pratique d'un concept immédiatement après qu'il ait été présenté.
- Validation de chaque étape par exécution de tests unitaires.
- Exercice « fil rouge » pour obtenir en fin de cours une application complète.
- QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Programme détaillé
Bonnes pratiques de conception d'une API
- la représentation d'une ressource.
- le modèle de maturité de Richardson.
- le choix des URI.
- les liens hypermedias (HATEOAS).
- les verbes HTTP: quel verbe pour quel usage.
- les statuts: quel statut pour quel usage.
Mise en pratique: préparation d'une API REST: choix des ressources, de leur URI et de leur représentation.
Présentation d'ASP.NET
- La création d'un projet avec la commande
dotnet new
. - Le fichier
Program.cs
. - L'enrichissement de la collection de services (
IServiceCollection
). - L'accès à la configuration (
IConfiguration
). - La configuration du log (
ILogger
). - Le serveur web embarqué Kestrel, le fonctionnement de l'event loop.
- Le
HttpContext
. - Les middlewares.
- Les action filters pour implémenter des cross-cutting concerns.
- La documentation avec Swagger.
- Les tests d'une API REST avec le
HttpClient.
Mise en pratique: création d'un projet ASP.NET, prise en main du fichier Program.cs
Création et test d'une API REST
- L'écriture d'un contrôleur.
- L'injection de dépendances.
- Le routage des requêtes vers les méthodes des contrôleurs.
- Les records comme moyen de représenter les ressources.
- La validation.
- L'activation du cache et les politiques d'éviction.
- La gestion des exceptions.
- L'internationalisation des messages d'exception.
- Le versionning d'API.
Mise en pratique: implémentation complète de l'API REST dans le projet créé précédemment.
La sécurité d'une API REST
- Présentation de l'offre ASP.NET: jeton ou cookie.
- Sécurité par jeton JWT.
- Le couplage avec un serveur avec OpenID Connect.
- La révocation des jetons.
- La gestion des rôles.
- Les règles d'autorisations.
- L'accès à l'identité de l'utilisateur.
Mise en pratique: application de la sécurité par jeton JWT, couplage avec un serveur OpenID Connect.
Intégration continue et livraison continue
- La méthodologie 12 factors app.
- Le déploiement en tant qu'application .NET.
- Le déploiement en tant qu'application native
- Le déploiement en tant qu'image OCI.
- La livraison d'une image OCI sur Kubernetes.
Mise en pratique: création d'une image OCI à partir de l'API REST développée précédemment, déploiement sur Kubernetes (Minikube).
Prix et financements
2 12
Réduction de 50% pour les associations reconnues d'utilité publique.
Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- Le dispositif FNE formation si votre organisation est éligible.
- Le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).