GaiaEx AcademyGaiaEx Academy
RESTful API डिज़ाइन और WebSocket इंटीग्रेशन
डेवलपरप्रोग्रामिंग10 min read

RESTful API डिज़ाइन और WebSocket इंटीग्रेशन

मार्केट डेटा और ट्रेडिंग API बनाना और उनका उपयोग करना

पोस्ट साझा करें

REST: रिसोर्स और वर्ब

REST CRUD को HTTP पर मैप करता है: पढ़ने के लिए GET, बनाने के लिए POST, आंशिक अपडेट के लिए PATCH, हटाने के लिए DELETE। स्टेटस कोड को ईमानदारी से इस्तेमाल करें—एरर JSON के साथ 200 क्लाइंट को तोड़ देता है।

पथ में वर्ज़न रखें (/v1/), बड़ी लिस्ट को पेजिनेट करें (append-only स्ट्रीम के लिए कर्सर फीड), और ब्रेकिंग बदलावों को एक डेप्रिकेशन विंडो के साथ दर्ज करें।

REST बनाम WEBSOCKET कमांड बनाम स्ट्रीमिंग—ज़्यादातर एक्सचेंज दोनों इस्तेमाल करते हैं REST (HTTPS) रिक्वेस्ट → रिस्पॉन्स → निष्क्रिय Place/cancel, बैलेंस, स्नैपशॉट WebSocket स्थायी डुप्लेक्स चैनल ट्रेड, बुक डेल्टा, टिकर
स्टेट बदलाव के लिए REST; निरंतर मार्केट डेटा के लिए WebSocket—बुक को HTTP रेट लिमिट पर पोल न करें।

की और HMAC

API की पहचान बताती हैं; सीक्रेट प्रमाण देते हैं। ट्रेडिंग एंडपॉइंट के लिए, एक कैनोनिकल स्ट्रिंग (मेथड + पथ + बॉडी + टाइमस्टैंप) को HMAC करें ताकि सीक्रेट तार पर कभी न चले। रीप्ले रोकने के लिए बासी टाइमस्टैंप रिजेक्ट करें—±30s एक सामान्य विंडो है।

OAuth थर्ड-पार्टी ऐप के लिए फिट होता है; सीधे एक्सचेंज बॉट अक्सर की+HMAC पर टिके रहते हैं। रेट लिमिट: 429 की उम्मीद रखें और Retry-After का सम्मान करें।

WebSocket अपग्रेड

सेशन Upgrade: websocket के साथ HTTP GET के रूप में शुरू होता है; सर्वर 101 Switching Protocols लौटाता है। इसके बाद, फ्रेम HTTP पोलिंग पर बार-बार होने वाले TLS हैंडशेक के मुकाबले सस्ते होते हैं।

सब्सक्राइब मैसेज आमतौर पर JSON होते हैं: मेथड, चैनल, और कभी-कभी प्राइवेट फिल के लिए ऑथ सिग्नेचर।

बुक, ट्रेड, रिकवरी

ट्रेड स्ट्रीम टिक डेटा है; बुक स्नैपशॉट + डेल्टा है साथ में सीक्वेंस नंबर के। अगर आप सीक्वेंस मिस करें, तो REST स्नैपशॉट से रीसिंक करें फिर सीक्वेंस > स्नैपशॉट वाले डेल्टा लगाएँ।

हार्टबीट: पिंग भेजें या सर्वर के पिंग की उम्मीद रखें; thundering herd से बचने के लिए jittered बैकऑफ के साथ रीकनेक्ट करें।

ऑर्डर बुक रीसिंक सीक्वेंस में अंतराल का मतलब है आपकी लोकल बुक गलत है जब तक ठीक न हो WS ड्रॉप REST स्नैपशॉट डेल्टा सब्सक्राइब करें सिर्फ़ तब लगाएँ जब seq > snapshot_seq seq: 10421 अंतराल 10422–10429 स्नैपशॉट @10429 डेल्टा 10430+ बासी बुक पर ट्रेड करना एक सेकंड के लिए कीमतें रोकने से बदतर है
डिस्कनेक्ट के बाद: स्नैपशॉट, फिर डेल्टा—कभी छूटे हुए स्तरों का अनुमान न लगाएँ।

GraphQL और OpenAPI

GraphQL डैशबोर्ड के लिए ओवर-फेचिंग कम करता है; कई एक्सचेंज ट्रेडिंग के हॉट पथ के लिए अभी भी REST एक्सपोज़ करते हैं। OpenAPI (Swagger) स्पेक कोडजेन और QA में मदद करते हैं—अपने उदाहरणों को कॉपी-पेस्ट योग्य रखें।

एक न्यूनतम कंज़्यूमर पैटर्न

WebSocket लूप को एक टास्क में चलाएँ, आखिरी कीमतों को एक थ्रेड-सेफ मैप में डालें, हेल्थ चेक के लिए HTTP एक्सपोज़ करें। रीकनेक्ट काउंट लॉग करें; जब वे उछलें तो अलर्ट भेजें।

साइनिंग और क्लॉक स्क्यू टेस्ट को CI में रखें: प्रोडक्शन में एक टूटा हुआ HMAC “मार्केट हिल गया” से अलग नहीं दिखता, जब तक आप लॉग ऑडिट न करें।