Une API (Application Programming Interface) est un contrat qui définit comment deux programmes communiquent entre eux. Elle expose des opérations que d’autres applications peuvent appeler sans connaître l’implémentation interne.

Client                      API                        Serveur
  │                          │                            │
  │── Requête (contrat) ────► │── logique métier ─────────►│
  │◄── Réponse (contrat) ─── │◄── résultat ───────────────│

L’API est une interface, pas une implémentation. Plusieurs technologies peuvent exposer la même API.


Les grandes familles d’API

TypeParadigmeTransportFormatCas d’usage
RESTRessources + CRUDHTTP/1.1, HTTP/2JSON, XMLAPIs web, microservices
GraphQLRequêtes flexiblesHTTPJSONApps mobile, front-end riche
gRPCAppels de fonctionsHTTP/2Protobuf (binaire)Microservices internes, Kubernetes
WebSocketCanal bidirectionnelTCP (via HTTP upgrade)JSON, binaireTemps réel (chat, jeux, trading)
WebhookCallback événementielHTTP POSTJSONNotifications asynchrones
SOAPMessages XMLHTTP, SMTPXML + WSDLLegacy enterprise (bancaire, ERP)

Comparatif : REST vs GraphQL vs gRPC vs WebSocket

CritèreRESTGraphQLgRPCWebSocket
Couplage client/serveurFaibleFaibleFort (.proto)Moyen
Flexibilité requêteFixe (endpoints)Totale (client choisit les champs)Fixe (méthodes)Libre
PerformanceMoyenMoyenTrès hauteHaute
Caching HTTP✅ natif❌ difficile
Streaming❌ (SSE partiel)✅ subscriptions✅ bidirectionnel✅ natif
LisibilitéHaute (JSON)Haute (JSON)Basse (binaire)Variable
ToolingExcellentBonBon (Go, Java)Bon
Idéal pourAPIs publiquesFrontend richeServices internesTemps réel

Webhook — le pattern événementiel

Un webhook est une API “inversée” : c’est le serveur qui appelle le client quand un événement survient, plutôt que le client qui interroge périodiquement.

Sans webhook (polling) :
  Client ──► GET /status  (toutes les 5s)    [inefficace]
  Client ──► GET /status
  Client ──► GET /status  ← réponse utile enfin

Avec webhook (push) :
  Serveur ──► POST https://client.com/webhook  [dès l'événement]
              { "event": "payment.success", "amount": 99.99 }

Exemples concrets :

  • GitHub → notifie votre CI/CD à chaque push
  • Stripe → notifie votre backend à chaque paiement
  • Slack → webhook entrant pour poster des messages

API publique vs privée vs partenaire

TypeAudienceAuthExemples
PubliqueTout le mondeAPI Key ou OAuthTwitter API, OpenWeatherMap
PartenairePartenaires commerciauxOAuth2, certificatsStripe, Twilio
Privée (interne)Services internesmTLS, JWT interneMicroservices, Kubernetes

Notes détaillées

  • HTTP — Méthodes, Codes et Headers — référence méthodes (GET/POST/PUT…), codes de statut, headers, CORS
  • API REST — principes REST, modélisation ressources, versioning, pagination, OpenAPI
  • API GraphQL — schéma SDL, queries, mutations, subscriptions, avantages vs REST
  • API WebSocket — canal bidirectionnel persistant, handshake, Socket.IO, SSE
  • Authentification API — API Keys, JWT, OAuth2, OpenID Connect, mTLS
  • RPC — gRPC : appels distants via Protobuf + HTTP/2

En relation avec