tadata
Retour à l'accueil

Design d'API : REST, GraphQL, gRPC et Choix Stratégiques

#api#architecture#rest#graphql#grpc

Les APIs sont les contrats entre systèmes. Le choix du style d'API, de la stratégie de versionnement et du modèle de gouvernance façonne la collaboration entre équipes et l'évolution des systèmes. C'est une décision architecturale, pas seulement technique.

Comparaison des styles d'API

AspectRESTGraphQLgRPC
ProtocoleHTTP/1.1 ou HTTP/2HTTP (endpoint unique)HTTP/2
Format de donnéesJSON (typiquement)JSONProtobuf (binaire)
SchemaOpenAPI/Swagger (optionnel)SDL (obligatoire)Fichiers proto (obligatoire)
DécouvrabilitéHATEOAS, docsIntrospection intégréePartage de fichiers proto
Over-fetchingProblème courantRésolu par conceptionField masks (optionnel)
Under-fetchingMultiples allers-retoursRequête uniqueConçu par RPC
StreamingLimité (SSE, WebSocket)SubscriptionsStreaming bidirectionnel
Support navigateurNatifNatifNécessite un proxy (gRPC-web)
CacheCache HTTP intégréComplexe (requêtes POST)Implémentation custom
Courbe d'apprentissageFaibleMoyenneMoyenne-Haute

Quand utiliser quoi

  • REST -- APIs publiques, CRUD simple, quand le cache HTTP compte, compatibilité large
  • GraphQL -- requêtes pilotées par le client, apps mobiles avec contraintes de bande passante, agrégation de backends
  • gRPC -- communication inter-services, haute performance, cas de streaming

Stratégies de versionnement

StratégieExempleAvantagesInconvénients
Chemin URL/api/v2/usersSimple, explicitePollution d'URL
Paramètre de requête/api/users?version=2Facile par défautFacile à manquer
HeaderAccept: application/vnd.api.v2+jsonURLs propresCache, plus dur à tester
Sans versionnement (évolution)Ajouter des champs, jamais supprimerPas de gestion de versionDiscipline stricte requise

Approche recommandée : versionnement par URL pour les APIs externes (clarté), évolution pour les APIs internes (moins d'overhead).

Patterns API Gateway

Une API gateway se place entre les clients et les services backend :

  • Routage -- diriger les requêtes vers le bon service
  • Authentification -- valider les tokens avant d'atteindre les backends
  • Rate limiting -- protéger les backends contre les abus
  • Transformation -- agréger ou remodeler les réponses
  • Cache -- réduire la charge backend pour les requêtes répétées
  • Monitoring -- logging et métriques centralisés

Options populaires : Kong, AWS API Gateway, GCP API Gateway, Traefik, Envoy.

Design API-First

Concevoir l'API avant d'écrire le code d'implémentation :

  1. Définir le contrat (spec OpenAPI, schéma GraphQL, ou fichier proto)
  2. Générer des serveurs mock pour que les équipes frontend démarrent immédiatement
  3. Générer automatiquement les SDKs clients
  4. Implémenter le backend selon le contrat
  5. Les tests de contrat valident la conformité

APIs internes vs externes

AspectAPIs internesAPIs externes
AudienceVos propres services/équipesDéveloppeurs tiers
VersionnementPeut être plus agressifDoit être conservateur
Breaking changesCoordination inter-équipesPériodes de dépréciation requises
AuthentificationService mesh, mTLSClés API, OAuth 2.0
Rate limitingBasé sur la confianceStrict, par paliers
DocumentationPeut être informelleDoit être exhaustive

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.