GaiaExGaiaEx
RESTful API Tasarımı ve WebSocket Entegrasyonu
GeliştiriciProgramlama10 min read

RESTful API Tasarımı ve WebSocket Entegrasyonu

Piyasa verisi ve işlem API'leri inşa etmek ve tüketmek

Paylaş

REST: Kaynaklar ve Fiiller

REST, CRUD'u HTTP'ye eşler: okumalar için GET, oluşturmak için POST, kısmi güncellemeler için PATCH, kaldırmak için DELETE. Durum kodlarını dürüstçe kullan — hata JSON'u ile 200 döndürmek istemcileri bozar.

Yolda sürüm belirt (/v1/), büyük listeleri sayfalandır (ekleme-sadece akışlar için imleç beslemesi), ve kırıcı değişiklikleri bir kullanımdan kaldırma penceresiyle belgele.

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
Durum değişiklikleri için REST; sürekli piyasa verisi için WebSocket — defteri HTTP hız sınırlarında yoklamayın.

Anahtarlar ve HMAC

API anahtarları kimlik belirtir; secret'lar kanıtlar. İşlem uç noktaları için, secret'ın hattan asla geçmemesi için kanonik bir dizeyi (method + path + body + timestamp) HMAC'le. Yeniden gönderimleri engellemek için eski zaman damgalarını reddet — ±30sn yaygın bir pencere.

OAuth üçüncü taraf uygulamalara uyar; saf borsa botları genellikle anahtar+HMAC'te kalır. Hız limitleri: 429 bekle ve Retry-After'a uy.

WebSocket Yükseltmeleri

Oturum Upgrade: websocket ile HTTP GET olarak başlar; sunucu 101 Switching Protocols döndürür. Sonrasında, çerçeveler HTTP yoklamasındaki tekrarlanan TLS el sıkışmalarına kıyasla ucuzdur.

Abonelik mesajları genellikle JSON'dur: yöntem, kanallar ve bazen özel gerçekleşmeler için kimlik doğrulama imzaları.

Defterler, İşlemler, Kurtarma

İşlem akışı tick verisidir; defterler sıra numaralarıyla anlık görüntü + delta şeklindedir. Sıraları kaçırırsan, REST anlık görüntüsünden yeniden senkronize ol, sonra sıra > anlık görüntü olan deltaları uygula.

Kalp atışı (heartbeat): ping gönder veya sunucu ping'lerini bekle; sürü kalabalığını önlemek için titreşimli geri çekilme (jittered backoff) ile yeniden bağlan.

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
Bağlantı kesildikten sonra: önce anlık görüntü, sonra deltalar — kayıp seviyeleri asla tahmin etme.

GraphQL ve OpenAPI

GraphQL, panolar için aşırı-getirmeyi (over-fetching) budar; çoğu borsa hâlâ işlem sıcak yolları için REST sunar. OpenAPI (Swagger) spekleri kod üretimine ve QA'ya yardımcı olur — örnekleri kopyala-yapıştırılabilir tut.

Minimal Bir Tüketici Örüntüsü

WebSocket döngüsünü bir görev içinde çalıştır, son fiyatları thread-safe bir haritaya it, sağlık kontrolleri için HTTP sun. Yeniden bağlanma sayılarını günlükle; sıçradıklarında uyar.

İmzalama ve saat sapması testlerini CI'a koy: üretimde bozuk bir HMAC, günlükleri denetleyene kadar „piyasa hareket etti” ile ayırt edilemez.