TypeScript میں tRPC: API ڈویلپمنٹ کو آسان بنائیں

عام طور پر API بنانے کا مطلب REST یا GraphQL میں سے کسی ایک کا انتخاب کرنا ہوتا ہے۔ آپ روٹس (routes) سیٹ کرنے، اسکیما (schemas) کو مینیج کرنے، اور اپنے فرنٹ اینڈ اور بیک اینڈ کے درمیان ٹائپس (types) کو سنک (sync) کرنے میں وقت صرف کرتے ہیں۔ اگر آپ دونوں طرف TypeScript استعمال کرتے ہیں، تو یہ عمل کافی بوجھل محسوس ہوتا ہے۔ آپ کو ایک ہی ٹائپس دو بار لکھنی پڑتی ہیں۔

tRPC اس ورک فلو کو بدل دیتا ہے۔ یہ ایک علیحدہ API کنٹریکٹ کی ضرورت کو ختم کر دیتا ہے۔ اس کے بجائے، یہ آپ کے سرور اور کلائنٹ کے درمیان ٹائپس کو خودکار طور پر شیئر کرنے کے لیے TypeScript کا استعمال کرتا ہے۔

tRPC کیوں استعمال کریں؟

  • دستی ٹائپ سنکنگ کی ضرورت نہیں: آپ سرور پر ایک فنکشن لکھتے ہیں اور کلائنٹ فوری طور پر ان پٹ اور آؤٹ پٹ ٹائپس کو جان لیتا ہے۔
  • کوڈ جنریشن کی ضرورت نہیں: ٹائپس بنانے کے لیے آپ کو اضافی ٹولز چلانے کی ضرورت نہیں ہوتی۔
  • اسکیما ڈرفٹ (schema drift) کا خطرہ نہیں: چونکہ کلائنٹ براہ راست سرور ٹائپس استعمال کرتا ہے، اس لیے آپ کا فرنٹ اینڈ آپ کے بیک اینڈ کے ساتھ ہم آہنگ رہتا ہے۔
  • تیز تر ڈویلپمنٹ: یہ نیٹ ورک ریکویسٹ کرنے کے بجائے ایک لوکل فائل میں فنکشن کال کرنے جیسا محسوس ہوتا ہے۔

روایتی طریقوں کے اپنے نقصانات ہیں۔ REST کے لیے دستی fetch کالز اور ڈپلیکیٹ ٹائپس کی ضرورت ہوتی ہے۔ GraphQL ایک اسکیما فراہم کرتا ہے لیکن resolvers اور codegen کے ساتھ پیچیدگی بڑھا دیتا ہے۔

tRPC آپ کے بیک اینڈ کو ٹائپ سیف (type-safe) فنکشنز کے مجموعے کے طور پر دیکھتا ہے۔ آپ روٹرز (routers) میں پروسیجرز (procedures) ڈیفائن کرتے ہیں۔ کلائنٹ آپ کے روٹر ٹائپ کو امپورٹ کرتا ہے اور ان پروسیجرز کو براہ راست کال کرتا ہے۔

مثال کے طور پر ورک فلو:

  1. سرور پر ویلیڈیشن (جیسے Zod) کے ساتھ ایک پروسیجر ڈیفائن کریں۔
  2. روٹر ٹائپ کو ایکسپورٹ کریں۔
  3. کلائنٹ پر مکمل آٹو کمپلیشن (autocompletion) اور ٹائپ سیفٹی کے ساتھ اس پروسیجر کو کال کریں۔

tRPC کب استعمال کریں:

  • آپ کا فرنٹ اینڈ اور بیک اینڈ دونوں TypeScript استعمال کرتے ہوں۔
  • آپ اسٹیک کے دونوں حصوں کو کنٹرول کرتے ہوں۔
  • آپ انٹرنل ٹولز، ایڈمن ڈیش بورڈز، یا فل اسٹیک Next.js ایپس بنا رہے ہیں۔
  • آپ مونو ریپو (monorepo) میں کام کرتے ہیں۔

tRPC کب استعمال کرنے سے گریز کریں:

  • آپ بہت سے مختلف صارفین کے لیے ایک پبلک API بنا رہے ہیں۔
  • آپ کے کلائنٹس Python یا Go جیسی مختلف زبانیں استعمال کرتے ہیں۔
  • آپ کو پیچیدہ API ورژننگ کی ضرورت ہے۔

tRPC ہر صورتحال میں REST یا GraphQL کا متبادل نہیں ہے۔ یہ اس وقت رفتار اور حفاظت کے لیے ایک بہترین ٹول ہے جب آپ کا اسٹیک متحد (unified) ہو۔ یہ API کی حدود کی رکاوٹوں کو ختم کرتا ہے اور آپ کو لاجک لکھنے پر توجہ مرکوز کرنے دیتا ہے۔

ماخذ: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3