GaiaEx AcademyGaiaEx Academy
تصميم واجهات REST وتكامل WebSocket
مطوّرالبرمجة10 min read

تصميم واجهات REST وتكامل WebSocket

بناء واستهلاك بيانات السوق وواجهات التداول البرمجية

مشاركة المنشورات

REST: الموارد والأفعال

REST يُطابق عمليات CRUD مع HTTP: GET للقراءة، POST للإنشاء، PATCH للتحديثات الجزئية، DELETE للحذف. استخدم رموز الحالة بصدق — 200 مع JSON خطأ يكسر العملاء.

ضع رقم الإصدار في المسار (/v1/)، رقّم القوائم الطويلة صفحيًا (تغذيات مؤشِّرة للتيارات القابلة للإضافة فقط)، ووثّق التغييرات الجذرية بنافذة إهمال.

REST في مقابل WEBSOCKET أوامر في مقابل تدفّق — أغلب البورصات تستخدم كلاهما REST (HTTPS) طلب ← استجابة ← خمول وضع/إلغاء الأوامر، الأرصدة، اللقطات WebSocket قناة ثنائية مستمرة الصفقات، فروق دفتر الأوامر، الأسعار
REST لتغييرات الحالة؛ WebSocket لبيانات السوق المستمرة — لا تستطلع دفتر الأوامر بمعدل حدود REST.

المفاتيح وHMAC

مفاتيح API تُعرِّف؛ الأسرار تُثبِت. لنقاط نهاية التداول، وقِّع بـHMAC سلسلة نظامية (الطريقة + المسار + المحتوى + الطابع الزمني) حتى لا يسافر السرّ أبدًا على السلك. رفض الطوابع الزمنية القديمة يحجب إعادة التشغيل — نافذة ±30 ثانية شائعة.

OAuth يناسب تطبيقات الطرف الثالث؛ روبوتات البورصة الخالصة غالبًا تبقى على المفتاح+HMAC. حدود المعدل: توقّع 429 واحترم Retry-After.

ترقيات WebSocket

تبدأ الجلسة كطلب HTTP GET مع Upgrade: websocket؛ يُرجع الخادم 101 Switching Protocols. بعد ذلك، الحُزم رخيصة مقارنة بمصافحات TLS المتكررة عند استطلاع HTTP.

رسائل الاشتراك عادة JSON: الطريقة، القنوات، وأحيانًا توقيعات مصادقة للتنفيذات الخاصة.

دفاتر الأوامر، الصفقات، الاستعادة

تدفق الصفقات بيانات تكّة (tick)؛ دفاتر الأوامر لقطة + فروق مع أرقام تسلسل. إذا فوّتّ تسلسلات، أعِد المزامنة من لقطة REST ثم طبّق الفروق ذات التسلسل الأكبر من التسلسل عند اللقطة.

نبض القلب: أرسل ping أو توقّع نبضات من الخادم؛ أعِد الاتصال بتأخير متصاعد عشوائي لتجنّب الازدحام الجماعي.

إعادة مزامنة دفتر الأوامر فجوات التسلسل تعني أن دفترك المحلي خاطئ حتى يُصحَّح انقطاع WS لقطة REST الاشتراك في الفروق طبّق فقط إذا كان seq > snapshot_seq seq: 10421 فجوة 10422–10429 لقطة @10429 فرق 10430+ التداول على دفتر أوامر قديم أسوأ من تجميد التسعير لثانية واحدة
بعد الانقطاع: لقطة، ثم فروق — لا تخمّن أبدًا المستويات المفقودة.

GraphQL وOpenAPI

GraphQL يقلّص الجلب المُفرِط للوحات المعلومات؛ كثير من البورصات لا تزال تعرض REST لمسارات التداول الساخنة. مواصفات OpenAPI (Swagger) تساعد في توليد الكود وضمان الجودة — احتفظ بالأمثلة قابلة للنسخ واللصق مباشرة.

نمط استهلاك بسيط

شغّل حلقة WebSocket في مهمة، ادفع آخر الأسعار إلى خريطة أمنة الخيوط (thread-safe)، وعرِّض واجهة HTTP لفحوصات الصحة. سجّل عدّادات إعادة الاتصال؛ نبّه عند ارتفاعها.

ضع اختبارات التوقيع وانحراف الساعة في CI: HMAC معطوب في الإنتاج لا يمكن تمييزه عن «تحرّك السوق» حتى تُراجَع السجلات.