GaiaEx AcademyGaiaEx Academy
Design di API RESTful e Integrazione WebSocket
SviluppatoreProgrammazione10 min read

Design di API RESTful e Integrazione WebSocket

Costruire e consumare API per dati di mercato e trading

Condividi Post

REST: Risorse e Verbi

REST mappa il CRUD su HTTP: GET per le letture, POST per creare, PATCH per aggiornamenti parziali, DELETE per rimuovere. Usa i codici di stato onestamente — un 200 con un JSON di errore rompe i client.

Versiona nel path (/v1/), pagina le liste grandi (feed a cursore per stream append-only), e documenta i breaking change con una finestra di deprecazione.

REST vs WEBSOCKET Commands vs streaming—most exchanges use both REST (HTTPS) Request → response → idle Place/cancel, balances, snapshots WebSocket Persistent duplex channel Trades, book deltas, tickers
REST per i cambi di stato; WebSocket per i dati di mercato continui — non fare polling del book ai rate limit HTTP.

Chiavi e HMAC

Le API key identificano; i secret provano. Per gli endpoint di trading, applica HMAC a una stringa canonica (metodo + path + body + timestamp) così che il secret non viaggi mai sulla rete. Rifiuta i timestamp obsoleti per bloccare i replay — ±30s è una finestra comune.

OAuth si adatta alle app di terze parti; i bot puri per exchange restano spesso su chiave+HMAC. Rate limit: aspettati 429 e onora Retry-After.

Upgrade WebSocket

La sessione inizia come un HTTP GET con Upgrade: websocket; il server restituisce 101 Switching Protocols. Dopo, i frame sono economici rispetto agli handshake TLS ripetuti su un polling HTTP.

I messaggi di subscribe sono di solito JSON: metodo, canali, e talvolta firme di autenticazione per i fill privati.

Book, Trade, Recovery

Lo stream dei trade è dato tick; i book sono snapshot + delta con numeri di sequenza. Se perdi delle sequenze, ri-sincronizza da uno snapshot REST e poi applica i delta con sequenza > snapshot.

Heartbeat: invia ping o aspettati ping dal server; riconnetti con backoff jitterato per evitare thundering herd.

ORDER BOOK RESYNC Sequence gaps mean your local book is wrong until fixed WS drop REST snapshot Subscribe deltas apply only if seq > snapshot_seq seq: 10421 gap 10422–10429 snapshot @10429 delta 10430+ Trading on a stale book is worse than pausing quotes for one second
Dopo la disconnessione: snapshot, poi delta — non indovinare mai i livelli mancanti.

GraphQL e OpenAPI

GraphQL riduce l'over-fetching per le dashboard; molti exchange esporano ancora REST per i percorsi caldi del trading. Le specifiche OpenAPI (Swagger) aiutano codegen e QA — mantieni gli esempi copiabili e riutilizzabili.

Un Pattern Minimo di Consumer

Esegui il loop WebSocket in un task, spingi gli ultimi prezzi in una mappa thread-safe, esponi HTTP per gli health check. Logga i conteggi di riconnessione; allerta quando aumentano.

Metti i test di firma e clock skew in CI: un HMAC rotto in produzione è indistinguibile da «il mercato si è mosso» finché non auditi i log.