TypeScript में tRPC: API डेवलपमेंट को सरल बनाएं
API बनाना आमतौर पर REST या GraphQL में से किसी एक को चुनने का मतलब होता है। आप रूट्स सेट करने, स्कीमा मैनेज करने और अपने फ्रंटएंड और बैकएंड के बीच टाइप्स को सिंक करने में समय बिताते हैं। यदि आप दोनों तरफ TypeScript का उपयोग करते हैं, तो यह प्रक्रिया काफी भारी महसूस होती है। अंततः आपको एक ही टाइप्स को दो बार लिखना पड़ता है।
tRPC इस वर्कफ़्लो को बदल देता है। यह एक अलग API कॉन्ट्रैक्ट की आवश्यकता को समाप्त कर देता है। इसके बजाय, यह आपके सर्वर और क्लाइंट के बीच टाइप्स को स्वचालित रूप से साझा करने के लिए TypeScript का उपयोग करता है।
tRPC का उपयोग क्यों करें?
- कोई मैन्युअल टाइप सिंकिंग नहीं: आप सर्वर पर एक फंक्शन लिखते हैं और क्लाइंट तुरंत इनपुट और आउटपुट टाइप्स को जान जाता है।
- कोई कोड जनरेशन नहीं: टाइप्स बनाने के लिए आपको अतिरिक्त टूल्स चलाने की आवश्यकता नहीं है।
- कोई स्कीमा ड्रिफ्ट नहीं: चूंकि क्लाइंट सीधे सर्वर टाइप्स का उपयोग करता है, इसलिए आपका फ्रंटएंड आपके बैकएंड के साथ सिंक रहता है।
- तेज़ डेवलपमेंट: यह नेटवर्क रिक्वेस्ट भेजने के बजाय एक लोकल फ़ाइल में फंक्शन कॉल करने जैसा महसूस होता है।
पारंपरिक तरीकों में कुछ कमियां (trade-offs) होती हैं। REST के लिए मैन्युअल fetch कॉल्स और डुप्लिकेट टाइप्स की आवश्यकता होती है। GraphQL एक स्कीमा प्रदान करता है लेकिन रिज़ॉल्वर्स (resolvers) और codegen के साथ जटिलता बढ़ा देता है।
tRPC आपके बैकएंड को टाइप-सेफ फंक्शन्स के एक संग्रह के रूप में मानता है। आप राउटर में प्रोसीजर (procedures) को परिभाषित करते हैं। क्लाइंट आपके राउटर टाइप को इम्पोर्ट करता है और इन प्रोसीजर को सीधे कॉल करता है।
उदाहरण फ्लो:
- सर्वर पर वैलिडेशन (जैसे Zod) के साथ एक प्रोसीजर को परिभाषित करें।
- राउटर टाइप को एक्सपोर्ट करें।
- क्लाइंट पर पूर्ण ऑटो-कम्प्लीशन और टाइप सेफ्टी के साथ उस प्रोसीजर को कॉल करें।
tRPC का उपयोग कब करें:
- आपका फ्रंटएंड और बैकएंड दोनों TypeScript का उपयोग करते हैं।
- आप स्टैक के दोनों पक्षों को नियंत्रित करते हैं।
- आप इंटरनल टूल्स, एडमिन डैशबोर्ड, या फुल-स्टैक Next.js ऐप्स बना रहे हैं।
- आप एक monorepo में काम करते हैं।
tRPC से कब बचें:
- आप कई अलग-अलग उपयोगकर्ताओं के लिए एक पब्लिक API बना रहे हैं।
- आपके क्लाइंट Python या Go जैसी अलग-अलग भाषाओं का उपयोग करते हैं।
- आपको जटिल API वर्जनिंग की आवश्यकता है।
tRPC हर स्थिति में REST या GraphQL का विकल्प नहीं है। यह तब गति और सुरक्षा के लिए एक उपकरण है जब आपका स्टैक एकीकृत (unified) हो। यह API सीमाओं के घर्षण (friction) को दूर करता है और आपको लॉजिक लिखने पर ध्यान केंद्रित करने देता है।
स्रोत: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3