GaiaEx AcademyGaiaEx Academy
Conception d'API RESTful et intégration WebSocket
DéveloppeurProgrammation10 min read

Conception d'API RESTful et intégration WebSocket

Construire et consommer des API de données de marché et de trading

Partager les articles

REST : ressources et verbes

REST fait correspondre le CRUD au HTTP : GET pour la lecture, POST pour la création, PATCH pour les mises à jour partielles, DELETE pour la suppression. Utilisez les codes de statut honnêtement — un 200 accompagné d'une erreur en JSON casse les clients.

Versionnez dans le chemin (/v1/), paginez les grandes listes (flux par curseur pour les flux en ajout uniquement), et documentez les changements cassants avec une fenêtre de dépréciation.

REST vs WEBSOCKET Commandes vs flux continu — la plupart des plateformes utilisent les deux REST (HTTPS) Requête → réponse → repos Placer/annuler, soldes, snapshots WebSocket Canal duplex persistant Transactions, deltas de carnet, tickers
REST pour les changements d'état ; WebSocket pour les données de marché continues — ne faites pas de polling du carnet aux limites de débit HTTP.

Clés et HMAC

Les clés API identifient ; les secrets prouvent. Pour les points de terminaison de trading, appliquez un HMAC à une chaîne canonique (méthode + chemin + corps + horodatage) afin que le secret ne circule jamais sur le fil. Rejetez les horodatages périmés pour bloquer les rejeux — une fenêtre de ±30 s est courante.

OAuth convient aux applications tierces ; les bots purement destinés aux plateformes restent souvent sur clé + HMAC. Limites de débit : attendez-vous à des 429 et respectez l'en-tête Retry-After.

Les upgrades WebSocket

La session démarre comme un GET HTTP avec Upgrade: websocket ; le serveur renvoie 101 Switching Protocols. Ensuite, les trames coûtent peu comparées aux poignées de main TLS répétées d'un polling HTTP.

Les messages d'abonnement sont généralement en JSON : méthode, canaux, et parfois des signatures d'authentification pour les exécutions privées.

Carnets, transactions, récupération

Le flux de transactions est constitué de données tick ; les carnets sont snapshot + delta avec des numéros de séquence. Si vous manquez des séquences, resynchronisez à partir d'un snapshot REST puis appliquez les deltas dont la séquence est supérieure au snapshot.

Battement de cœur (heartbeat) : envoyez un ping ou attendez-vous à des pings du serveur ; reconnectez-vous avec un backoff aléatoire (jitter) pour éviter les effets de troupeau.

RESYNCHRONISATION DU CARNET D'ORDRES Les trous de séquence signifient que votre carnet local est faux jusqu'à correction Coupure WS Snapshot REST Abonnement deltas appliquer seulement si seq > snapshot_seq seq : 10421 trou 10422–10429 snapshot @10429 delta 10430+ Trader sur un carnet périmé est pire que de suspendre les cotations pendant une seconde
Après une déconnexion : snapshot, puis deltas — ne devinez jamais les niveaux manquants.

GraphQL et OpenAPI

GraphQL réduit la surextraction de données pour les tableaux de bord ; de nombreuses plateformes exposent encore REST pour les chemins critiques du trading. Les spécifications OpenAPI (Swagger) aident à la génération de code et au QA — gardez les exemples copiables-collables.

Un schéma de consommateur minimal

Faites tourner la boucle WebSocket dans une tâche, poussez les derniers prix dans une map thread-safe, exposez du HTTP pour les vérifications de santé. Journalisez le nombre de reconnexions ; alertez quand il grimpe.

Mettez des tests de signature et de dérive d'horloge en intégration continue : un HMAC cassé en production est indissociable de « le marché a bougé » jusqu'à ce que vous auditiez les journaux.