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)

En présentiel ou en classe virtuelle
En français ou en anglais
Public

Développeurs et développeuses .NET (C#), architectes

Accessible aux personnes en situation de handicap

Délai

Le cours peut être organisé dans un délai d'un mois.

Objectifs

A l'issue du cours vous saurez:

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

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
dotnet run
  • 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
[ApiController]
  • 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
[Authorize]
  • 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
dotnet publish
  • 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:

Contact

Questions, inscriptions, demande d'adaptation: