اچھا API ڈیزائن: REST، GraphQL، RPC، ورژننگ اور Pagination
Good API design: REST vs GraphQL vs RPC, versioning, pagination
40 منٹ
تین طریقے
REST API کا ایک طریقہ ہے۔ 2026 میں دو اور طریقے ملیں گے: GraphQL اور RPC (جس کا جدید روپ gRPC ہے)۔ REST وسیلوں کو URLs پر اور HTTP فعل پر دکھاتا ہے۔ GraphQL ایک endpoint رکھتا ہے اور کالر کو وہی فیلڈز مانگنے دیتا ہے جو اسے چاہئیں، نہ زیادہ نہ کم۔ gRPC افعال دکھاتا ہے، مضبوط ٹائپ شدہ ان پُٹ اور آؤٹ پُٹ کے ساتھ، ڈیٹا سینٹر کے اندر سرور سے سرور کی رفتار کے لیے بہترین۔ ہر طرز کا اپنا گھر ہے۔ عوامی، وسیع پیمانے پر استعمال ہونے والے APIs کے لیے REST۔ موبائل اور ویب ایپس کے لیے GraphQL۔ تیز رفتار اندرونی microservices کے لیے gRPC۔
پاکستانی سیاق۔ NADRA، FBR، SECP اور PTA سب REST APIs دیتے ہیں، کیونکہ REST انٹیگریشن کے شراکت داروں (بینک، ٹیلیکام، وینڈر) کی مشترکہ زبان ہے اور یہ اسی HTTP پر چلتا ہے جس پر سب کا اعتماد ہے۔ ایزی پیسہ اور جاز کیش اپنی موبائل ایپس کے اندر GraphQL استعمال کرتے ہیں ان اسکرینوں کے لیے جنہیں صارف کا بیلنس، پچھلے پانچ لین دین، اور تین پروموشن بینرز ایک ہی paint میں دکھانے ہوتے ہیں۔ اسٹیٹ بینک کا PRISM ISO 20022 پیغامات پر چلتا ہے جو الگ دنیا ہے، مگر RPC کے ذائقے کا۔ ایک منیجر کو زیادہ تر REST سے واسطہ پڑتا ہے۔ ایک CTO کو معلوم ہونا چاہیے کہ GraphQL یا gRPC کب فائدہ مند ہے۔
Versioning وہ نظم و ضبط ہے جس سے API بدلتا ہے بغیر ہر کالر کو توڑے۔ دو صحت مند نمونے غالب ہیں۔ URL versioning راستے میں ورژن ڈالتا ہے: /v1/taxpayers، /v2/taxpayers۔ Header versioning ورژن ایک کسٹم header میں رکھتا ہے۔ انتخاب اتنا اہم نہیں جتنا یہ قاعدہ: کسی موجودہ ورژن میں توڑنے والی تبدیلی کبھی نہ کریں۔ فیلڈ ہٹانی ہو تو نیا ورژن بنائیں۔ فیلڈ کا نام بدلنا ہو تو نیا نام اسی ورژن میں شامل کریں اور پرانا نام alias کے طور پر رکھیں۔ deprecation کا اعلان بلند آواز سے، response headers اور documentation میں۔ Sunset اعلان شدہ ٹائم لائن پر، نہ کہ کسی جمعہ کی شام۔
فوری چیک
فوری چیک: جدید AI روایتی قاعدہ بنیاد پروگرام سے کس طرح مختلف ہے؟
کیوں؟
کیوں کا پہلا درجہ: API ڈیزائن خود ایک نظم و ضبط کیوں ہے؟ کیونکہ API ہی واحد معاہدہ ہے جو ایک اجنبی آپ کے نظام کے ساتھ کرتا ہے۔ اندرونی کوڈ بدصورت چل جائے گا؛ بیرونی API نہیں۔ خراب کوڈ آپ کی ٹیم کو مہنگا پڑتا ہے۔ خراب API ملک کے ہر انٹیگریٹر کو مہنگا پڑتا ہے۔
Claude کے ساتھ آزمائیں
Claude یا ChatGPT کے ساتھ آزمانے کے لیے پرامپٹ: 'میں SECP کی کمپنی ریجسٹری کے لیے ایک عوامی REST API لکھ رہا ہوں۔ کمپنی سرچ، فائلنگ تاریخ، ڈائریکٹر فہرست کے endpoints کے ساتھ OpenAPI 3.0 spec لکھیں۔ cursor pagination، ISO 8601 تاریخیں، ساختہ error objects، /v1 پر URL versioning۔ Rate limit headers شامل کریں۔ اردو میں مقامی error پیغامات۔' YAML پڑھیں، editor.swagger.io میں لگائیں، دیکھیں کیا چلتا ہے۔
ماخذ
ماخذ اور مزید مطالعہ۔ OpenAPI Specification 3.0۔ Google API Design Guide۔ Microsoft REST API Guidelines۔ GraphQL official docs (graphql.org/learn)۔ gRPC documentation (grpc.io/docs)۔ Stripe API docs ایک معیاری مثال کے طور پر (stripe.com/docs/api)۔ slack.engineering پر 'Cursor pagination explained'۔