tRPC के साथ एंड-टू-एंड type-safe APIs · पाठ

tRPC की कार्यक्षमता बढ़ाना

कस्टम बिल्डर, प्लगइन और अन्य लाइब्रेरी के साथ एकीकरण द्वारा tRPC का विस्तार करने के उन्नत तरीके जानें।

पाठ 3, कुल 4 में से11 चरण

tRPC की कार्यक्षमता बढ़ाना, CoddyKit पर tRPC के साथ एंड-टू-एंड type-safe APIs का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह tRPC के साथ एंड-टू-एंड type-safe APIs सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। tRPC के साथ एंड-टू-एंड type-safe APIs पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

tRPC के मूल का विस्तार करना

tRPC पहले से ही बेहद शक्तिशाली है, लेकिन कभी-कभी आपके अनुप्रयोग को अधिक कस्टम नियंत्रण और विशेष व्यवहार की आवश्यकता होती है। यह पाठ आपको दिखाएगा कि बुनियादी मिडलवेयर से आगे tRPC का विस्तार कैसे करें।

हम विशेष API एंडपॉइंट बनाने के लिए कस्टम प्रक्रिया बिल्डर का अध्ययन करेंगे और यह चर्चा करेंगे कि ORM जैसी अन्य लाइब्रेरी के साथ tRPC को सहज रूप से कैसे जोड़ा जाए।

कस्टम बिल्डर क्यों?

मानक मिडलवेयर सभी प्रक्रियाओं या प्रक्रियाओं के किसी समूह पर प्रमाणीकरण या लॉगिंग जैसे सामान्य तर्क लागू करने के लिए उपयोगी होता है।

लेकिन यदि आपको विशिष्ट प्रकार की प्रक्रियाएँ परिभाषित करनी हों, जैसे adminProcedure या publicProcedure, जिनमें प्रत्येक के संदर्भ गुण या पहले से कॉन्फ़िगर की गई मिडलवेयर शृंखला हो, तो? इसके लिए कस्टम प्रक्रिया बिल्डर बिल्कुल उपयुक्त हैं!

`createBuilder` से बिल्डर बनाना

tRPC आपको अपना प्रक्रिया फ़ैक्टरी परिभाषित करने में सहायता करने के लिए createBuilder यूटिलिटी देता है। यह बिल्डर संदर्भ (ctx) का विस्तार कर सकता है, मेटाडेटा जोड़ सकता है या इसके द्वारा बनाई गई किसी भी प्रक्रिया पर मिडलवेयर स्वतः लागू कर सकता है।

यह सामान्य प्रारंभिक सेटअप तर्क को पुनः उपयोग किए जा सकने वाले पैटर्न में अलग रखने देता है, जिससे आपकी API परिभाषाएँ अधिक साफ़ और एकसमान बनती हैं।

बिल्डर का उदाहरण: एडमिन प्रक्रिया

आइए, एक adminProcedure बनाते हैं। यह बिल्डर सुनिश्चित करता है कि उपयोगकर्ता न केवल लॉग इन हो ( protectedProcedure के माध्यम से), बल्कि उसके संदर्भ में isAdmin फ़्लैग भी सेट हो। इसके बाद adminProcedure का उपयोग करने वाली किसी भी प्रक्रिया पर यह तर्क स्वतः लागू हो जाता है।

// Minimal tRPC-like setup for demonstration
type Context = { user?: { id: number; isAdmin?: boolean } };

const mockProcedure = {
  use: (middleware: any) => ({
    use: (nextMiddleware: any) => ({
      _isBuilder: true,
      _middlewares: [middleware, nextMiddleware]
    }),
    _isBuilder: true,
    _middlewares: [middleware]
  }),
  _isBuilder: true,
  _middlewares: []
};

const t = {
  procedure: mockProcedure
};

// --- Actual tRPC Builder Code ---
const protectedProcedure = t.procedure.use(async ({ ctx, next }: any) => {
  if (!ctx.user) {
    throw new Error('Not authenticated');
  }
  return next({ ctx: { ...ctx, user: ctx.user } });
});

const adminProcedure = protectedProcedure.use(async ({ ctx, next }: any) => {
  if (!ctx.user?.isAdmin) {
    throw new Error('Not an admin!');
  }
  return next({ ctx: { ...ctx, user: ctx.user } });
});

console.log("Protected procedure builder defined.");
console.log("Admin procedure builder defined.");
console.log("Admin procedure has " + adminProcedure._middlewares.length + " middlewares.");

कस्टम बिल्डर के लाभ

कस्टम बिल्डर कई महत्वपूर्ण लाभ देते हैं:

  • पुनः उपयोग: जटिल तर्क को एक बार परिभाषित करके कई प्रक्रियाओं पर लागू करें।
  • प्रकार-सुरक्षा: प्रक्रियाओं के समूहों के लिए विशिष्ट संदर्भ प्रकार लागू करें।
  • पठनीयता: प्रक्रियाएँ स्वयं अपना उद्देश्य स्पष्ट करती हैं (जैसे adminProcedure.query(...) इसकी आवश्यकताओं को स्पष्ट रूप से दर्शाता है)।
  • एकरूपता: सुनिश्चित करें कि किसी विशेष प्रकार की सभी प्रक्रियाएँ निश्चित नियमों और जाँचों का पालन करें।

बाहरी लाइब्रेरी के साथ एकीकरण

tRPC आपके डेटा स्तर के बारे में कोई निश्चित राय नहीं रखता। इसका अर्थ है कि आप इसे अपनी पसंद के किसी भी ORM (जैसे Prisma, Drizzle), डेटाबेस क्लाइंट या बाहरी API सेवा के साथ आसानी से एकीकृत कर सकते हैं।

इस सहज एकीकरण की कुंजी अक्सर इन क्लाइंट के इंस्टेंस शुरू करके उन्हें अपने tRPC संदर्भ से जोड़ने में होती है। इससे वे आपकी सभी प्रक्रियाओं में आसानी से उपलब्ध रहते हैं।

ORM (Prisma) को संदर्भ से जोड़ना

tRPC अनुप्रयोगों में एक बहुत सामान्य पैटर्न है कि आप अपने ORM क्लाइंट (जैसे Prisma Client) को शुरू करें और फिर उस इंस्टेंस को अपने tRPC संदर्भ ऑब्जेक्ट से जोड़ दें।

इससे आपकी सभी tRPC प्रक्रियाएँ ctx.prisma के माध्यम से डेटाबेस क्लाइंट तक पहुँच सकती हैं, उसका प्रबंधन एक जगह केंद्रित रहता है और प्रकार-सुरक्षा मिलती है।

// Minimal tRPC-like setup for demonstration
type MockPrismaClient = {
  user: {
    findUnique: (args: { where: { id: number } }) => { id: number; name: string } | null;
  };
};

type ContextWithPrisma = {
  prisma: MockPrismaClient;
};

const mockProcedure = {
  query: (handler: (opts: { ctx: ContextWithPrisma }) => any) => ({
    _handler: handler,
    _isQuery: true
  })
};

const t = {
  procedure: mockProcedure
};

// --- Actual tRPC Context Integration ---
const publicProcedure = t.procedure;

const getUserProcedure = publicProcedure.query(async ({ ctx }) => {
  const user = await ctx.prisma.user.findUnique({ where: { id: 1 } });
  return user ? `User name: ${user.name}` : 'User not found.';
});

// --- Demonstration (conceptual execution) ---
const mockPrisma: MockPrismaClient = {
  user: {
    findUnique: (args) => {
      if (args.where.id === 1) {
        return { id: 1, name: 'Alice' };
      }
      return null;
    }
  }
};

const mockContext: ContextWithPrisma = { prisma: mockPrisma };

console.log("Prisma client attached to context type.");
console.log("Conceptual handler output for user 1:");
console.log(await getUserProcedure._handler({ ctx: mockContext }));

प्लगइन की शक्ति (अवधारणात्मक)

बिल्डर के अलावा, tRPC एक प्रयोगात्मक createTRPCPlugin API भी देता है। प्लगइन tRPC के आंतरिक हिस्सों में और गहराई से हुक प्रदान करते हैं, जिससे आप उन्नत तरीकों से त्रुटि प्रारूपण को अनुकूलित कर सकते हैं, कस्टम डेटा ट्रांसफ़ॉर्मर जोड़ सकते हैं या अनुरोध के जीवनचक्र में बदलाव कर सकते हैं।

इनका उद्देश्य वास्तव में जटिल, मूल-स्तरीय विस्तार करना है, जो tRPC के आधारभूत संचालन को प्रभावित करते हैं।

किसका उपयोग कब करें?

कस्टम बिल्डर और प्लगइन के बीच चुनाव आपकी विस्तार आवश्यकताओं पर निर्भर करता है:

  • कस्टम बिल्डर: विशिष्ट प्रकार की प्रक्रियाएँ परिभाषित करने, संदर्भ ऑब्जेक्ट को समृद्ध करने या सामान्य मिडलवेयर शृंखला लागू करने के लिए सबसे अच्छे हैं। ये प्रक्रिया परिभाषा स्तर पर काम करते हैं।
  • प्लगइन: tRPC के मूल व्यवहार में बदलाव करने के लिए आदर्श हैं, जैसे कस्टम त्रुटि प्रबंधन, डेटा का क्रमांकन/विघटन या वैश्विक, आधारभूत स्तर पर बाहरी प्रणालियों के साथ एकीकरण।

त्वरित जाँच

कस्टम tRPC प्रक्रिया बिल्डर का उपयोग करने के प्रमुख लाभों में से कौन-से हैं?

विस्तारों का सारांश

इस पाठ में हमने tRPC की क्षमताओं का विस्तार करना सीखा। हमने adminProcedure जैसी विशेष और पुनः उपयोग योग्य प्रक्रियाएँ बनाने के लिए कस्टम प्रक्रिया बिल्डर का उपयोग किया, जिससे पुनः उपयोग, प्रकार-सुरक्षा और एकरूपता बेहतर होती है।

हमने यह भी देखा कि ORM जैसी बाहरी लाइब्रेरी को tRPC संदर्भ से जोड़कर उनके साथ एकीकरण कैसे किया जाता है। अंत में, हमने tRPC प्लगइन के माध्यम से मूल हिस्सों में गहरे बदलाव की उन्नत संभावनाओं पर संक्षेप में चर्चा की। ये उपकरण आपको tRPC को अपने अनुप्रयोग की विशिष्ट आवश्यकताओं के अनुरूप ढालने में सक्षम बनाते हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ tRPC के साथ एंड-टू-एंड type-safe APIs सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
10
पाठ
40

अक्सर पूछे जाने वाले प्रश्न

क्या “tRPC की कार्यक्षमता बढ़ाना” पाठ निःशुल्क है?

हाँ — tRPC के साथ एंड-टू-एंड type-safe APIs अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “tRPC की कार्यक्षमता बढ़ाना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। tRPC के साथ एंड-टू-एंड type-safe APIs पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“tRPC की कार्यक्षमता बढ़ाना” में मैं क्या सीखूँगा?

कस्टम बिल्डर, प्लगइन और अन्य लाइब्रेरी के साथ एकीकरण द्वारा tRPC का विस्तार करने के उन्नत तरीके जानें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ tRPC के साथ एंड-टू-एंड type-safe APIs का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या tRPC के साथ एंड-टू-एंड type-safe APIs शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर tRPC के साथ एंड-टू-एंड type-safe APIs शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“tRPC की कार्यक्षमता बढ़ाना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस tRPC के साथ एंड-टू-एंड type-safe APIs पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर tRPC के साथ एंड-टू-एंड type-safe APIs पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. tRPC मोनोरेपो सेट अप करना
  2. कोड साझा करना और पुन:उपयोग
  3. tRPC की कार्यक्षमता बढ़ाना
  4. साझा tRPC पैकेज का संस्करण निर्धारण और प्रकाशन
← tRPC के साथ एंड-टू-एंड type-safe APIs पर वापस जाएँ