TypeScript मध्ये tRPC: API डेव्हलपमेंट सोपे करा

API तयार करणे म्हणजे सहसा REST किंवा GraphQL पैकी एकाची निवड करणे असा होतो. तुम्हाला रूट्स (routes) सेट करण्यासाठी, स्कीमा (schemas) व्यवस्थापित करण्यासाठी आणि तुमच्या frontend आणि backend मध्ये types सिंक करण्यासाठी वेळ खर्च करावा लागतो. जर तुम्ही दोन्ही बाजूंनी TypeScript वापरत असाल, तर ही प्रक्रिया खूप जड वाटते. तुम्हाला शेवटी एकच types दोनदा लिहावे लागतात.

tRPC ही कार्यपद्धती (workflow) बदलून टाकते. यामुळे वेगळ्या API कॉन्ट्रॅक्टची गरज उरत नाही. त्याऐवजी, ते तुमच्या server आणि client मध्ये types आपोआप शेअर करण्यासाठी TypeScript चा वापर करते.

tRPC का वापरावे?

  • मॅन्युअल type syncing ची गरज नाही: तुम्ही server वर एक function लिहिता आणि client ला लगेच input आणि output types समजतात.
  • No code generation: types तयार करण्यासाठी तुम्हाला अतिरिक्त टूल्स चालवण्याची गरज नाही.
  • No schema drift: client थेट server types वापरत असल्यामुळे, तुमचे frontend तुमच्या backend सोबत सिंकमध्ये राहते.
  • जलद डेव्हलपमेंट: नेटवर्क रिक्वेस्ट करण्याऐवजी एखाद्या लोकल फाईलमध्ये function कॉल केल्यासारखे वाटते.

पारंपारिक पद्धतींमध्ये काही त्रुटी (trade-offs) असतात. REST साठी मॅन्युअल fetch calls आणि duplicated types लागतात. GraphQL स्कीमा प्रदान करते परंतु resolvers आणि codegen मुळे गुंतागुंत वाढवते.

tRPC तुमच्या backend ला type-safe functions च्या संचाप्रमाणे (collection) हाताळते. तुम्ही routers मध्ये procedures परिभाषित करता. client तुमचा router type इम्पोर्ट करतो आणि या procedures थेट कॉल करतो.

उदाहरण प्रवाह (Example flow):

  1. server वर validation (उदा. Zod) सह एक procedure परिभाषित करा.
  2. router type export करा.
  3. पूर्ण autocompletion आणि type safety सह client वर तो procedure कॉल करा.

tRPC कधी वापरावे:

  • तुमचे frontend आणि backend दोन्ही TypeScript वापरत असतील.
  • तुमच्याकडे स्टॅकच्या (stack) दोन्ही बाजूंचे नियंत्रण असेल.
  • तुम्ही अंतर्गत टूल्स (internal tools), ॲडमिन डॅशबोर्ड किंवा full-stack Next.js ॲप्स बनवत असाल.
  • तुम्ही monorepo मध्ये काम करत असाल.

tRPC कधी टाळावे:

  • तुम्ही अनेक वेगवेगळ्या वापरकर्त्यांसाठी public API बनवत असाल.
  • तुमचे clients Python किंवा Go सारख्या वेगवेगळ्या भाषा वापरत असतील.
  • तुम्हाला जटिल API versioning ची आवश्यकता असेल.

tRPC प्रत्येक परिस्थितीत REST किंवा GraphQL ची जागा घेऊ शकत नाही. जेव्हा तुमचा stack unified असतो, तेव्हा वेग आणि सुरक्षिततेसाठी हे एक उत्तम साधन आहे. हे API च्या सीमांमधील अडथळे (friction) दूर करते आणि तुम्हाला लॉजिक लिहिण्यावर लक्ष केंद्रित करण्यास मदत करते.

स्रोत: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3