GaiaEx AcademyGaiaEx Academy
Desain API RESTful dan Integrasi WebSocket
DeveloperPemrograman10 min read

Desain API RESTful dan Integrasi WebSocket

Membangun dan mengonsumsi data pasar serta API trading

Bagikan Postingan

REST: Resource dan Verb

REST memetakan CRUD ke HTTP: GET untuk membaca, POST untuk membuat, PATCH untuk update sebagian, DELETE untuk menghapus. Gunakan status code secara jujur — 200 dengan JSON error merusak klien.

Beri versi di path (/v1/), lakukan pagination untuk daftar besar (cursor feed untuk stream append-only), dan dokumentasikan breaking change dengan jendela deprecation.

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 untuk perubahan status; WebSocket untuk data pasar berkelanjutan — jangan melakukan polling order book pada batas rate limit HTTP.

Key dan HMAC

API key mengidentifikasi; secret membuktikan. Untuk endpoint trading, buat HMAC dari sebuah string kanonik (method + path + body + timestamp) sehingga secret tidak pernah melewati jaringan. Tolak timestamp yang basi untuk mencegah replay — ±30 detik adalah jendela yang umum dipakai.

OAuth cocok untuk aplikasi pihak ketiga; bot exchange murni sering tetap memakai key+HMAC. Rate limit: siapkan diri untuk 429 dan hormati header Retry-After.

Upgrade WebSocket

Sesi dimulai sebagai HTTP GET dengan Upgrade: websocket; server mengembalikan 101 Switching Protocols. Setelah itu, frame jauh lebih murah dibanding melakukan handshake TLS berulang lewat polling HTTP.

Pesan subscribe biasanya berupa JSON: method, channel, dan terkadang tanda tangan otentikasi untuk fill privat.

Order Book, Transaksi, Recovery

Stream trades adalah data tick; order book adalah snapshot + delta dengan nomor sequence. Jika kamu melewatkan sequence, resync dari snapshot REST lalu terapkan delta dengan sequence > snapshot.

Heartbeat: kirim ping atau harapkan ping dari server; reconnect dengan backoff yang di-jitter untuk menghindari 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
Setelah disconnect: snapshot, lalu delta — jangan pernah menebak level yang hilang.

GraphQL dan OpenAPI

GraphQL memangkas over-fetching untuk dashboard; banyak exchange masih menyediakan REST untuk hot path trading. Spesifikasi OpenAPI (Swagger) membantu codegen dan QA — pastikan contoh-contohnya bisa disalin-tempel langsung.

Pola Consumer Minimal

Jalankan loop WebSocket dalam sebuah task, dorong harga terakhir ke dalam map yang thread-safe, sediakan HTTP untuk health check. Catat log jumlah reconnect; beri alert saat jumlahnya melonjak.

Masukkan tes signing dan clock skew ke dalam CI: HMAC yang rusak di produksi tidak bisa dibedakan dari "pasar sedang bergerak" sampai kamu mengaudit log-nya.