𝗧𝗿𝗣𝗖 𝗶𝗻 𝗧𝘆𝗽𝗲𝗦cript: 𝗦𝗶𝗺𝗽𝗹𝗶𝗳𝘆 𝗔𝗣𝗜 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁

ஒரு API-ஐ உருவாக்குவது என்பது பொதுவாக REST அல்லது GraphQL ஆகியவற்றில் ஒன்றைத் தேர்ந்தெடுப்பதாகும். ரூட்களை (routes) அமைப்பதற்கும், ஸ்கீமாக்களை (schemas) நிர்வகிப்பதற்கும், உங்கள் பிரண்ட்எண்ட் (frontend) மற்றும் பேக்எண்ட் (backend) இடையே வகைகளை (types) ஒத்திசைப்பதற்கும் நீங்கள் நேரத்தைச் செலவிடுகிறீர்கள். இரண்டு பக்கங்களிலும் TypeScript பயன்படுத்தினால், இந்த செயல்முறை கடினமாகத் தோன்றும். இறுதியில் நீங்கள் ஒரே வகைகளை இரண்டு முறை எழுத வேண்டியிருக்கும்.

tRPC இந்த பணிப்பாய்வை (workflow) மாற்றுகிறது. இது ஒரு தனி API ஒப்பந்தத்தின் (API contract) தேவையை நீக்குகிறது. அதற்குப் பதிலாக, உங்கள் சர்வர் மற்றும் கிளையன்ட் இடையே வகைகளைத் தானாகவே பகிர TypeScript-ஐப் பயன்படுத்துகிறது.

ஏன் tRPC-ஐப் பயன்படுத்த வேண்டும்?

  • மேனுவல் டைப் சிங்க் (manual type syncing) தேவையில்லை: நீங்கள் சர்வரில் ஒரு செயல்பாட்டை (function) எழுதினால், கிளையன்ட் உடனடியாக அதன் இன்புட் (input) மற்றும் அவுட்புட் (output) வகைகளைத் தெரிந்து கொள்ளும்.
  • கோட் ஜெனரேஷன் (code generation) தேவையில்லை: வகைகளை உருவாக்க நீங்கள் கூடுதல் கருவிகளை இயக்க வேண்டிய அவசியமில்லை.
  • ஸ்கீமா டிரிஃப்ட் (schema drift) இல்லை: கிளையன்ட் நேரடியாக சர்வர் வகைகளைப் பயன்படுத்துவதால், உங்கள் பிரண்ட்எண்ட் உங்கள் பேக்எண்டுடன் எப்போதும் ஒத்திசைவில் இருக்கும்.
  • வேகமான மேம்பாடு: இது ஒரு நெட்வொர்க் கோரிக்கையை (network request) அனுப்புவதை விட, ஒரு லோக்கல் ஃபைலில் உள்ள செயல்பாட்டை அழைப்பது போன்ற உணர்வைத் தரும்.

பாரம்பரிய முறைகளில் சில குறைபாடுகள் உள்ளன. REST-க்கு மேனுவல் ஃபெட்ச் (fetch) அழைப்புகள் மற்றும் நகல் எடுக்கப்பட்ட வகைகள் தேவைப்படுகின்றன. GraphQL ஒரு ஸ்கீமாவை வழங்குகிறது, ஆனால் ரெசல்வர்ஸ் (resolvers) மற்றும் கோட்ஜென் (codegen) மூலம் சிக்கலை அதிகரிக்கிறது.

tRPC உங்கள் பேக்எண்டை டைப்-சேஃப் (type-safe) செயல்பாடுகளின் தொகுப்பாகக் கருதுகிறது. நீங்கள் ரூட்டர்களில் (routers) புரோசீஜர்களை (procedures) வரையறுக்கிறீர்கள். கிளையன்ட் உங்கள் ரூட்டர் வகையை இறக்குமதி செய்து (import), இந்த புரோசீஜர்களை நேரடியாக அழைக்கிறது.

உதாரணப் படிநிலைகள்:

  1. சரிபார்ப்புடன் (validation - எ.கா: Zod) சர்வரில் ஒரு புரோசீஜரை வரையறுக்கவும்.
  2. ரூட்டர் வகையை எக்ஸ்போர்ட் (export) செய்யவும்.
  3. முழுமையான ஆட்டோ-கம்ப்ளீஷன் (autocompletion) மற்றும் டைப் சேஃப்டியுடன் (type safety) கிளையண்டில் அந்த புரோசீஜரை அழைக்கவும்.

tRPC-ஐ எப்போது பயன்படுத்த வேண்டும்:

  • உங்கள் பிரண்ட்எண்ட் மற்றும் பேக்எண்ட் ஆகிய இரண்டும் TypeScript பயன்படுத்துகின்றனவா?
  • ஸ்டேக்கின் (stack) இரண்டு பக்கங்களையும் நீங்களே கட்டுப்படுத்துகிறீர்களா?
  • நீங்கள் இன்டர்னல் டூல்ஸ் (internal tools), அட்மின் டேஷ்போர்டுகள் (admin dashboards) அல்லது ஃபுல்-ஸ்டாக் Next.js ஆப்ஸ்களை உருவாக்குகிறீர்களா?
  • நீங்கள் ஒரு மோனோரெப்போவில் (monorepo) பணியாற்றுகிறீர்களா?

tRPC-ஐ எப்போது தவிர்க்க வேண்டும்:

  • நீங்கள் பலதரப்பட்ட பயனர்களுக்காக ஒரு பொதுவான API-ஐ (public API) உருவாக்குகிறீர்களா?
  • உங்கள் கிளையன்ட்கள் Python அல்லது Go போன்ற வெவ்வேறு மொழிகளைப் பயன்படுத்துகிறார்களா?
  • உங்களுக்கு சிக்கலான API வெர்ஷனிங் (versioning) தேவையா?

tRPC எல்லாச் சூழல்களிலும் REST அல்லது GraphQL-க்கு மாற்றாகாது. உங்கள் ஸ்டேக் ஒருங்கிணைக்கப்பட்டிருக்கும் போது (unified), வேகம் மற்றும் பாதுகாப்பிற்கான ஒரு கருவியாக இது செயல்படுகிறது. இது API எல்லைகளின் உராய்வைக் குறைத்து, லாஜிக்கை (logic) எழுதுவதில் நீங்கள் கவனம் செலுத்த அனுமதிக்கிறது.

ஆதாரம்: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3