GaiaEx AcademyGaiaEx Academy
RESTful API ڈیزائن اور WebSocket انٹیگریشن
ڈویلپرپروگرامنگ10 min read

RESTful API ڈیزائن اور WebSocket انٹیگریشن

مارکیٹ ڈیٹا اور ٹریڈنگ APIs بنانا اور استعمال کرنا

پوسٹس شیئر کریں

REST: وسائل اور فعل

REST CRUD کو HTTP سے میپ کرتا ہے: پڑھنے کے لیے GET، بنانے کے لیے POST، جزوی اپڈیٹس کے لیے PATCH، ہٹانے کے لیے DELETE۔ اسٹیٹس کوڈز ایمانداری سے استعمال کریں — ایرر JSON کے ساتھ 200 کلائنٹس کو توڑ دیتا ہے۔

پاتھ میں ورژن رکھیں (/v1/)، بڑی فہرستوں کو پیج بنائیں (append-only اسٹریمز کے لیے کرسر فیڈز)، اور بریکنگ تبدیلیوں کو ایک ڈیپریکیشن ونڈو کے ساتھ دستاویزی کریں۔

REST بمقابلہ WEBSOCKET کمانڈز بمقابلہ اسٹریمنگ — زیادہ تر ایکسچینجز دونوں استعمال کرتے ہیں REST (HTTPS) درخواست → جواب → آرام لگانا/منسوخی، بیلنسز، اسنیپ شاٹس WebSocket مستقل دو طرفہ چینل ٹریڈز، بک ڈیلٹاز، ٹکرز
حالت کی تبدیلیوں کے لیے REST؛ مسلسل مارکیٹ ڈیٹا کے لیے WebSocket — بک کو HTTP ریٹ حدوں پر پول نہ کریں۔

کلیدیں اور HMAC

API کلیدیں شناخت کرتی ہیں؛ سیکرٹس ثابت کرتے ہیں۔ ٹریڈنگ اینڈ پوائنٹس کے لیے، ایک کینونیکل اسٹرنگ (میتھڈ + پاتھ + باڈی + ٹائم اسٹیمپ) کو HMAC کریں تاکہ سیکرٹ کبھی وائر پر سفر نہ کرے۔ ری پلیز کو روکنے کے لیے باسی ٹائم اسٹیمپس مسترد کریں — ±30 سیکنڈ ایک عام ونڈو ہے۔

OAuth تھرڈ-پارٹی ایپس کے لیے فٹ بیٹھتا ہے؛ خالص ایکسچینج بوٹس اکثر کلید+HMAC پر رہتے ہیں۔ ریٹ حدیں: 429 کی توقع رکھیں اور Retry-After کا احترام کریں۔

WebSocket اپگریڈز

سیشن HTTP GET کے طور پر Upgrade: websocket کے ساتھ شروع ہوتا ہے؛ سرور 101 Switching Protocols واپس کرتا ہے۔ اس کے بعد، فریمز HTTP پولنگ پر دہرائے گئے TLS ہینڈشیکس کے مقابلے سستے ہیں۔

سبسکرائب پیغامات عام طور پر JSON ہوتے ہیں: میتھڈ، چینلز، اور کبھی کبھی پرائیویٹ فِلز کے لیے آتھ سگنیچرز۔

بکس، ٹریڈز، بحالی

ٹریڈز اسٹریم ٹِک ڈیٹا ہے؛ بکس ترتیبی نمبروں کے ساتھ اسنیپ شاٹ + ڈیلٹا ہیں۔ اگر آپ ترتیبیں مِس کریں، تو REST اسنیپ شاٹ سے دوبارہ سِنک کریں پھر sequence > snapshot والے ڈیلٹاز لگائیں۔

ہارٹ بیٹ: پنگ بھیجیں یا سرور پنگز کی توقع رکھیں؛ تھنڈرنگ ہرڈز سے بچنے کے لیے جِٹرڈ بیک آف کے ساتھ دوبارہ کنیکٹ کریں۔

آرڈر بک ری-سِنک ترتیب کے خلا کا مطلب ہے آپ کی مقامی بک ٹھیک ہونے تک غلط ہے WS ڈراپ REST اسنیپ شاٹ ڈیلٹاز سبسکرائب کریں صرف اس صورت میں لگائیں اگر seq > snapshot_seq seq: 10421 خلا 10422–10429 اسنیپ شاٹ @10429 ڈیلٹا 10430+ باسی بک پر ٹریڈنگ ایک سیکنڈ کے لیے قیمتیں روکنے سے بدتر ہے
ڈسکنیکٹ کے بعد: اسنیپ شاٹ، پھر ڈیلٹاز — گمشدہ سطحوں کا کبھی اندازہ نہ لگائیں۔

GraphQL اور OpenAPI

GraphQL ڈیش بورڈز کے لیے زائد-فیچنگ کاٹتا ہے؛ بہت سے ایکسچینجز اب بھی ٹریڈنگ ہاٹ پاتھس کے لیے REST ظاہر کرتے ہیں۔ OpenAPI (Swagger) اسپیکس کوڈجن اور QA میں مدد دیتے ہیں — مثالوں کو کاپی-پیسٹ کے قابل رکھیں۔

ایک کم از کم کنزیومر پیٹرن

WebSocket لوپ کو ایک ٹاسک میں چلائیں، آخری قیمتوں کو ایک تھریڈ-سیف میپ میں دھکیلیں، صحت چیکس کے لیے HTTP ظاہر کریں۔ دوبارہ کنیکٹ کی تعداد لاگ کریں؛ جب یہ اسپائیک ہو تو الرٹ کریں۔

سائننگ اور کلاک اسکیو ٹیسٹس CI میں رکھیں: پروڈکشن میں ایک ٹوٹی ہوئی HMAC "مارکیٹ حرکت کر گئی" سے الگ نہیں کی جا سکتی جب تک آپ لاگز کا آڈٹ نہ کریں۔