Styles et protocoles d'API
Il n'existe pas de style d'API universel. Le bon choix dépend de qui appelle l'API, de la quantité de données nécessaire et de la rapidité avec laquelle elles doivent arriver.
Une question, cinq styles d'API
« Afficher le client 1042 avec ses trois dernières commandes. »
GET /customers/1042
200 OK · customer1.2 KB
GET /customers/1042/orders?limit=3
200 OK · 3 orders3.4 KB
Allers-retours 2
Exemple illustratif
API RESTful
Le Representational State Transfer (REST) est le style architectural d'API le plus largement adopté. Les API REST utilisent des méthodes HTTP standard et sont sans état, mises en cache et évolutives. En savoir plus sur les bonnes pratiques de conception d'API.
- Ressources et URI : Nommage de ressources basé sur les noms (p. ex. /customers, /orders)
- Méthodes HTTP : GET, POST, PUT, PATCH, DELETE pour les opérations CRUD
- Codes de statut : Utilisation appropriée des codes de réponse 2xx, 4xx, 5xx
- HATEOAS : Liens hypermédia pour la découvrabilité
GraphQL
Langage de requête pour API qui donne aux clients le contrôle sur les données qu'ils reçoivent. Idéal pour les exigences de données complexes et les applications mobiles.
- Requêtes flexibles : Les clients spécifient exactement les données dont ils ont besoin
- Point de terminaison unique : Un seul endpoint pour toutes les opérations
- Fortement typé : Développement schema-first avec sécurité de type
- Temps réel : Prise en charge native des abonnements et mises à jour en direct
gRPC
Framework RPC haute performance utilisant HTTP/2 et Protocol Buffers. Idéal pour la communication microservices. En savoir plus sur gRPC dans ASP.NET core.
- Protocole binaire : Plus rapide et plus compact que JSON
- Streaming : Streaming client, serveur et bidirectionnel
- Génération de code : Générer automatiquement le code client et serveur à partir des fichiers .proto
- Agnostique au langage : Prise en charge de plusieurs langages de programmation
WebSockets et SignalR
Communication bidirectionnelle en temps réel pour les mises à jour en direct. SignalR simplifie les fonctionnalités web en temps réel.
- Connexions persistantes : Connexions durables pour des mises à jour instantanées
- Notifications push : Messages initiés par le serveur vers les clients
- Cas d'usage : Chat, tableaux de bord, jeux, édition collaborative
- Mécanisme de repli : Repli automatique sur Server-Sent Events, puis sur le long polling si WebSockets n'est pas disponible
OData
Open Data Protocol pour API RESTful interrogeables. Largement utilisé dans les écosystèmes Microsoft (Dynamics 365, SharePoint).
- Langage de requête : Filtrage, tri, pagination, expansion basés sur URL
- Métadonnées : API auto-descriptives avec endpoint $metadata
- Opérations par lots : Soumettre plusieurs opérations en une seule requête
- Requêtes Delta : Récupérer uniquement les données modifiées depuis la dernière requête
Technologies de développement d'API
Nous privilégions la pile Microsoft et choisissons d'autres environnements d'exécution lorsque l'équipe ou la charge de travail le demande.
ASP.NET core web API
Framework moderne et multiplateforme pour construire des services HTTP. En savoir plus sur ASP.NET core web API.
Fonctionnalités clés
- API minimales : Syntaxe simplifiée pour les petits microservices
- Contrôleurs : Modèle MVC complet pour les API complexes
- Model binding : Liaison automatique des paramètres depuis routes, query strings, body
- Validation : Annotations de données et prise en charge de FluentValidation
- Injection de dépendances : Conteneur DI intégré
- Pipeline middleware : Pipeline de traitement de requêtes extensible
Intégration OpenAPI (Swagger)
Générez automatiquement la documentation de l'API avec Microsoft.AspNetCore.OpenApi (intégré depuis .NET 9) ou avec Swashbuckle:
- Documentation API interactive (Swagger UI)
- Génération de SDK client pour plusieurs langages
- Prise en charge du versionnage d'API
- Commentaires XML pour descriptions détaillées des opérations
Azure Functions (API Serverless)
Calcul serverless événementiel pour les API déclenchées par HTTP. En savoir plus sur Azure Functions.
Quand utiliser Azure Functions
- Charges événementielles : Traiter messages de file, uploads blob, changements base de données
- Tâches planifiées : Jobs en arrière-plan basés sur cron
- API légères : Endpoints HTTP simples sans routage complexe
- Optimisation des coûts : Payer uniquement le temps d'exécution (plan consommation)
- Auto-scaling : Mise à l'échelle horizontale automatique basée sur la charge
Node.js (Express, NestJS, Fastify)
- Express : Framework minimaliste et flexible pour développement API rapide
- NestJS : Framework TypeScript-first, niveau entreprise avec architecture Angular-like
- Fastify : Framework haute performance focalisé sur vitesse et faible overhead
Python (FastAPI, Django REST Framework)
- FastAPI : Framework moderne et async avec génération OpenAPI automatique
- Django REST Framework : Toolkit puissant pour construire des API web avec Django