
RESTful API डिज़ाइन और WebSocket इंटीग्रेशन
मार्केट डेटा और ट्रेडिंग API बनाना और उनका उपयोग करना
REST: रिसोर्स और वर्ब
REST CRUD को HTTP पर मैप करता है: पढ़ने के लिए GET, बनाने के लिए POST, आंशिक अपडेट के लिए PATCH, हटाने के लिए DELETE। स्टेटस कोड को ईमानदारी से इस्तेमाल करें—एरर JSON के साथ 200 क्लाइंट को तोड़ देता है।
पथ में वर्ज़न रखें (/v1/), बड़ी लिस्ट को पेजिनेट करें (append-only स्ट्रीम के लिए कर्सर फीड), और ब्रेकिंग बदलावों को एक डेप्रिकेशन विंडो के साथ दर्ज करें।
की और HMAC
API की पहचान बताती हैं; सीक्रेट प्रमाण देते हैं। ट्रेडिंग एंडपॉइंट के लिए, एक कैनोनिकल स्ट्रिंग (मेथड + पथ + बॉडी + टाइमस्टैंप) को HMAC करें ताकि सीक्रेट तार पर कभी न चले। रीप्ले रोकने के लिए बासी टाइमस्टैंप रिजेक्ट करें—±30s एक सामान्य विंडो है।
OAuth थर्ड-पार्टी ऐप के लिए फिट होता है; सीधे एक्सचेंज बॉट अक्सर की+HMAC पर टिके रहते हैं। रेट लिमिट: 429 की उम्मीद रखें और Retry-After का सम्मान करें।
WebSocket अपग्रेड
सेशन Upgrade: websocket के साथ HTTP GET के रूप में शुरू होता है; सर्वर 101 Switching Protocols लौटाता है। इसके बाद, फ्रेम HTTP पोलिंग पर बार-बार होने वाले TLS हैंडशेक के मुकाबले सस्ते होते हैं।
सब्सक्राइब मैसेज आमतौर पर JSON होते हैं: मेथड, चैनल, और कभी-कभी प्राइवेट फिल के लिए ऑथ सिग्नेचर।
बुक, ट्रेड, रिकवरी
ट्रेड स्ट्रीम टिक डेटा है; बुक स्नैपशॉट + डेल्टा है साथ में सीक्वेंस नंबर के। अगर आप सीक्वेंस मिस करें, तो REST स्नैपशॉट से रीसिंक करें फिर सीक्वेंस > स्नैपशॉट वाले डेल्टा लगाएँ।
हार्टबीट: पिंग भेजें या सर्वर के पिंग की उम्मीद रखें; thundering herd से बचने के लिए jittered बैकऑफ के साथ रीकनेक्ट करें।
GraphQL और OpenAPI
GraphQL डैशबोर्ड के लिए ओवर-फेचिंग कम करता है; कई एक्सचेंज ट्रेडिंग के हॉट पथ के लिए अभी भी REST एक्सपोज़ करते हैं। OpenAPI (Swagger) स्पेक कोडजेन और QA में मदद करते हैं—अपने उदाहरणों को कॉपी-पेस्ट योग्य रखें।
एक न्यूनतम कंज़्यूमर पैटर्न
WebSocket लूप को एक टास्क में चलाएँ, आखिरी कीमतों को एक थ्रेड-सेफ मैप में डालें, हेल्थ चेक के लिए HTTP एक्सपोज़ करें। रीकनेक्ट काउंट लॉग करें; जब वे उछलें तो अलर्ट भेजें।
साइनिंग और क्लॉक स्क्यू टेस्ट को CI में रखें: प्रोडक्शन में एक टूटा हुआ HMAC “मार्केट हिल गया” से अलग नहीं दिखता, जब तक आप लॉग ऑडिट न करें।