GaiaExGaiaEx
RESTful API дизайны және WebSocket интеграциясы
ӘзірлеушіПрограммалау10 min read

RESTful API дизайны және WebSocket интеграциясы

Нарық деректері мен сауда API-ларын құру және қолдану

Жазбаларды бөлісу

REST: ресурстар мен етістіктер

REST CRUD әрекеттерін HTTP-ке салыстырады: оқу үшін GET, жасау үшін POST, ішінара жаңарту үшін PATCH, жою үшін DELETE. Статус кодтарын шынайы қолданыңыз — 200 қатесі бар JSON-мен бірге келсе, клиенттерді бұзады.

Жолда нұсқа көрсетіңіз (/v1/), үлкен тізімдерді бөліктерге бөліңіз (қосымша ағындар үшін курсор фидтері), және бұзушы өзгерістерді ескіру мерзімімен құжаттаңыз.

REST vs WEBSOCKET Командалар vs ағынды берілу — көптеген биржалар екеуін де қолданады REST (HTTPS) Сұрау → жауап → бос тұру Қою/болдырмау, баланс, снапшот WebSocket Тұрақты екі жақты арна Мәмілелер, кітап дельталары, тикерлер
REST — күй өзгерістері үшін; WebSocket — үздіксіз нарық деректері үшін. Кітапты HTTP жылдамдық шегінде сұрап тексермеңіз (poll).

Кілттер мен HMAC

API кілттері анықтайды; құпия сөздер дәлелдейді. Трейдинг соңғы нүктелері үшін HMAC канондық жолды (метод + жол + денесі + уақыт белгісі) қолтаңбалайды, сол арқылы құпия сөз желі арқылы өтпейді. Қайталанулардың алдын алу үшін ескірген уақыт белгілерін қабылдамаңыз — ±30 секунд әдеттегі терезе.

OAuth үшінші тарап қосымшаларына жарайды; таза биржа боттары көбіне кілт+HMAC-та қалады. Жылдамдық шектері: 429 күтіңіз және Retry-After-ды сақтаңыз.

WebSocket жаңартулары

Сессия Upgrade: websocket бар HTTP GET ретінде басталады; сервер 101 Switching Protocols қайтарады. Осыдан кейін кадрлар HTTP сұрап тексеру кезіндегі қайталанатын TLS қол алысуларымен салыстырғанда арзан.

Жазылу хабарламалары әдетте JSON: метод, арналар, кейде жеке орындалымдар (fills) үшін аутентификация қолтаңбалары.

Кітаптар, мәмілелер, қалпына келтіру

Мәмілелер ағыны — тик деректері; кітаптар — реттік нөмірлері бар снапшот + дельта. Реттік нөмірлерді жіберіп алсаңыз, REST снапшотынан қайта синхрондаңыз, содан кейін реттік нөмірі снапшоттан үлкен дельталарды қолданыңыз.

Жүректің соғуы (heartbeat): пинг жіберіңіз немесе сервер пингтерін күтіңіз; «нөпір эффектін» (thundering herd) болдырмау үшін кездейсоқтандырылған кідірістермен қайта қосылыңыз.

ТАПСЫРЫС КІТАБЫН ҚАЙТА СИНХРОНДАУ Реттік нөмір алшақтығы — жергілікті кітап түзетілгенше қате болады WS үзілді REST снапшот Дельталарға жазылу тек seq > snapshot_seq болса ғана қолдану seq: 10421 алшақтық 10422–10429 снапшот @10429 дельта 10430+ Ескірген кітапта сауда жасау бір секундқа тоқтап тұрудан да жаман
Ажыраған соң: алдымен снапшот, содан кейін дельталар — жоқ деңгейлерді ешқашан болжамаңыз.

GraphQL және OpenAPI

GraphQL дэшбордтар үшін артық деректі алуды қысқартады; көптеген биржалар трейдинг «hot path»-тары үшін әлі де REST-ті ұсынады. OpenAPI (Swagger) спецификациялары код генерациясы мен QA-ға көмектеседі — мысалдарды көшіріп-қоюға болатын күйде сақтаңыз.

Минималды тұтынушы үлгісі

WebSocket циклын тапсырмада (task) жүргізіңіз, соңғы бағаларды ағын-қауіпсіз картаға (thread-safe map) итеріңіз, денсаулық тексерулері үшін HTTP ашыңыз. Қайта қосылу санын логтаңыз; олар өрлегенде хабарландыру жіберіңіз.

Қолтаңбалау мен сағат ауытқуы тестілерін CI-ге қойыңыз: продакшндағы бұзылған HMAC логтарды тексергенше «нарық қозғалды» дегеннен ажыратылмайды.