GaiaEx AcademyGaiaEx Academy
RESTful API Design at WebSocket Integration
DeveloperProgramming10 min read

RESTful API Design at WebSocket Integration

Paggawa at paggamit ng market data at trading API

Ibahagi ang mga Post

REST: Resources at Verbs

Ang REST ay nagmamapa ng CRUD sa HTTP: GET para sa reads, POST para gumawa, PATCH para sa partial updates, DELETE para tanggalin. Gamitin ang status codes nang tapat — ang 200 na may error JSON ay sumisira sa mga client.

Mag-version sa path (/v1/), pahinain ang malaking listahan (cursor feeds para sa append-only streams), at idokumento ang breaking changes gamit ang deprecation window.

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 para sa state changes; WebSocket para sa tuluy-tuloy na market data — huwag mag-poll sa book sa HTTP rate limits.

Keys at HMAC

Ang API keys ay nagkikilala; ang secrets ang nagpapatunay. Para sa trading endpoints, i-HMAC ang isang canonical string (method + path + body + timestamp) para hindi kailanman dumaan sa wire ang secret. Tanggihan ang stale na timestamps para harangin ang replays — ang ±30s ay isang karaniwang window.

Bagay ang OAuth para sa third-party apps; ang purong exchange bots ay madalas manatili sa key+HMAC. Rate limits: asahan ang 429 at igalang ang Retry-After.

WebSocket Upgrades

Nagsisimula ang session bilang HTTP GET na may Upgrade: websocket; ibabalik ng server ang 101 Switching Protocols. Matapos ito, mas mura ang frames kumpara sa paulit-ulit na TLS handshakes sa HTTP polling.

Ang subscribe messages ay karaniwang JSON: method, channels, at kung minsan auth signatures para sa private fills.

Books, Trades, Recovery

Ang trades stream ay tick data; ang books ay snapshot + delta na may sequence numbers. Kung nakaligtaan mo ang sequences, i-resync mula sa REST snapshot tapos ilapat ang deltas na may sequence > snapshot.

Heartbeat: magpadala ng ping o asahan ang server pings; kumonekta ulit gamit ang jittered backoff para maiwasan ang thundering herds.

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
Matapos ang disconnect: snapshot, tapos deltas — huwag kailanman hulaan ang mga nawawalang antas.

GraphQL at OpenAPI

Ginagawang maigsi ng GraphQL ang over-fetching para sa dashboards; marami sa mga exchange ay nagbabahagi pa rin ng REST para sa trading hot paths. Ang OpenAPI (Swagger) specs ay nakakatulong sa codegen at QA — panatilihing copy-pasteable ang mga halimbawa.

Isang Minimal na Consumer Pattern

Patakbuhin ang WebSocket loop sa isang task, itulak ang mga huling presyo sa isang thread-safe na map, ilantad ang HTTP para sa health checks. I-log ang reconnect counts; magalerto kapag tumaas nang biglaan ang mga ito.

Ilagay ang signing at clock skew tests sa CI: ang sirang HMAC sa production ay hindi matukoy mula sa “gumalaw ang market” hanggang mag-audit ka ng logs.