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

ಸಾಮಾನ್ಯವಾಗಿ API ನಿರ್ಮಿಸುವುದು ಎಂದರೆ REST ಅಥವಾ GraphQL ಇವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಆರಿಸಿಕೊಳ್ಳುವುದು ಎಂದರ್ಥ. ನೀವು ರೂಟ್‌ಗಳನ್ನು (routes) ಹೊಂದಿಸಲು, ಸ್ಕೀಮಾಗಳನ್ನು (schemas) ನಿರ್ವಹಿಸಲು ಮತ್ತು ನಿಮ್ಮ ಫ್ರಂಟ್‌ಎಂಡ್ ಮತ್ತು ಬ್ಯಾಕ್‌ಎಂಡ್ ನಡುವೆ ಟೈಪ್‌ಗಳನ್ನು (types) ಸಿಂಕ್ ಮಾಡಲು ಸಮಯ ವ್ಯಯಿಸುತ್ತೀರಿ. ನೀವು ಎರಡೂ ಕಡೆ TypeScript ಬಳಸುತ್ತಿದ್ದರೆ, ಈ ಪ್ರಕ್ರಿಯೆಯು ಭಾರವೆನಿಸುತ್ತದೆ. ನೀವು ಒಂದೇ ರೀತಿಯ ಟೈಪ್‌ಗಳನ್ನು ಎರಡು ಬಾರಿ ಬರೆಯಬೇಕಾಗುತ್ತದೆ.

tRPC ಈ ಕೆಲಸದ ವಿಧಾನವನ್ನೇ ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ಪ್ರತ್ಯೇಕ API ಕಾಂಟ್ರಾಕ್ಟ್‌ನ ಅಗತ್ಯವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಬದಲಾಗಿ, ಇದು ನಿಮ್ಮ ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ನಡುವೆ ಟೈಪ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಲು TypeScript ಅನ್ನು ಬಳಸುತ್ತದೆ.

Why use tRPC?

  • ಮ್ಯಾನುಯಲ್ ಟೈಪ್ ಸಿಂಕಿಂಗ್ ಅಗತ್ಯವಿಲ್ಲ: ನೀವು ಸರ್ವರ್‌ನಲ್ಲಿ ಒಂದು ಫಂಕ್ಷನ್ ಬರೆದರೆ, ಕ್ಲೈಂಟ್ ತಕ್ಷಣವೇ ಅದರ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಟೈಪ್‌ಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳುತ್ತದೆ.
  • ಕೋಡ್ ಜನರೇಷನ್ ಅಗತ್ಯವಿಲ್ಲ: ಟೈಪ್‌ಗಳನ್ನು ರಚಿಸಲು ನೀವು ಹೆಚ್ಚುವರಿ ಪರಿಕರಗಳನ್ನು (tools) ಬಳಸುವ ಅಗತ್ಯವಿಲ್ಲ.
  • ಸ್ಕೀಮಾ ಡ್ರಿಫ್ಟ್ (schema drift) ಇರುವುದಿಲ್ಲ: ಕ್ಲೈಂಟ್ ನೇರವಾಗಿ ಸರ್ವರ್ ಟೈಪ್‌ಗಳನ್ನು ಬಳಸುವುದರಿಂದ, ನಿಮ್ಮ ಫ್ರಂಟ್‌ಎಂಡ್ ನಿಮ್ಮ ಬ್ಯಾಕ್‌ಎಂಡ್‌ನೊಂದಿಗೆ ಯಾವಾಗಲೂ ಸಿಂಕ್ ಆಗಿರುತ್ತದೆ.
  • ವೇಗದ ಅಭಿವೃದ್ಧಿ: ಇದು ನೆಟ್‌ವರ್ಕ್ ರಿಕ್ವೆಸ್ಟ್ ಮಾಡುವ ಬದಲು, ಸ್ಥಳೀಯ ಫೈಲ್‌ನಲ್ಲಿ (local file) ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಯುವಂತೆ ಭಾಸವಾಗುತ್ತದೆ.

ಸಾಂಪ್ರದಾಯಿಕ ವಿಧಾನಗಳು ಕೆಲವು ಮಿತಿಗಳನ್ನು ಹೊಂದಿವೆ. REST ಗೆ ಮ್ಯಾನುಯಲ್ ಫೆಚ್ ಕರೆಗಳು (fetch calls) ಮತ್ತು ಡೂಪ್ಲಿಕೇಟ್ ಟೈಪ್‌ಗಳ ಅಗತ್ಯವಿದೆ. GraphQL ಸ್ಕೀಮಾವನ್ನು ಒದಗಿಸುತ್ತದೆ ಆದರೆ ರೆಸೋಲ್ವರ್‌ಗಳು (resolvers) ಮತ್ತು ಕೋಡ್‌ಜೆನ್ (codegen) ಮೂಲಕ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.

tRPC ನಿಮ್ಮ ಬ್ಯಾಕ್‌ಎಂಡ್ ಅನ್ನು type-safe ಫಂಕ್ಷನ್‌ಗಳ ಸಂಗ್ರಹವಾಗಿ ಪರಿಗಣಿಸುತ್ತದೆ. ನೀವು ರೂಟರ್‌ಗಳಲ್ಲಿ ಪ್ರೊಸೀಜರ್‌ಗಳನ್ನು (procedures) ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೀರಿ. ಕ್ಲೈಂಟ್ ನಿಮ್ಮ ರೂಟರ್ ಟೈಪ್ ಅನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಈ ಪ್ರೊಸೀಜರ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಕರೆಯುತ್ತದೆ.

Example flow:

  1. ಸರ್ವರ್‌ನಲ್ಲಿ ವ್ಯಾಲಿಡೇಶನ್‌ನೊಂದಿಗೆ (Zod ನಂತಹ) ಒಂದು ಪ್ರೊಸೀಜರ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ.
  2. ರೂಟರ್ ಟೈಪ್ ಅನ್ನು ಎಕ್ಸ್‌ಪೋರ್ಟ್ ಮಾಡಿ.
  3. ಪೂರ್ಣ ಆಟೋಕಂಪ್ಲೀಷನ್ ಮತ್ತು ಟೈಪ್ ಸೇಫ್ಟಿಯೊಂದಿಗೆ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಆ ಪ್ರೊಸೀಜರ್ ಅನ್ನು ಕರೆಯಿರಿ.

When to use tRPC:

  • ನಿಮ್ಮ ಫ್ರಂಟ್‌ಎಂಡ್ ಮತ್ತು ಬ್ಯಾಕ್‌ಎಂಡ್ ಎರಡೂ TypeScript ಬಳಸುತ್ತಿದ್ದರೆ.
  • ನೀವು ಸ್ಟ್ಯಾಕ್‌ನ ಎರಡೂ ಕಡೆಗಳನ್ನು ನಿಯಂತ್ರಿಸುತ್ತಿದ್ದರೆ.
  • ನೀವು ಇಂಟರ್ನಲ್ ಟೂಲ್ಸ್, ಅಡ್ಮಿನ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಳು ಅಥವಾ ಫುಲ್-ಸ್ಟ್ಯಾಕ್ Next.js ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ.
  • ನೀವು ಮೊನೊರೆಪೋ (monorepo) ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ.

When to avoid tRPC:

  • ನೀವು ಅನೇಕ ವಿಭಿನ್ನ ಬಳಕೆದಾರರಿಗಾಗಿ ಪಬ್ಲಿಕ್ API ಅನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ.
  • ನಿಮ್ಮ ಕ್ಲೈಂಟ್‌ಗಳು Python ಅಥವಾ Go ನಂತಹ ವಿಭಿನ್ನ ಭಾಷೆಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ.
  • ನಿಮಗೆ ಸಂಕೀರ್ಣವಾದ API ವರ್ಷನಿಂಗ್ (versioning) ಅಗತ್ಯವಿದ್ದರೆ.

tRPC ಎಲ್ಲಾ ಸಂದರ್ಭಗಳಲ್ಲಿ REST ಅಥವಾ GraphQL ಗೆ ಪರ್ಯಾಯವಲ್ಲ. ನಿಮ್ಮ ಸ್ಟ್ಯಾಕ್ ಏಕೀಕೃತವಾಗಿದ್ದಾಗ (unified), ವೇಗ ಮತ್ತು ಸುರಕ್ಷತೆಗಾಗಿ ಇದು ಒಂದು ಪರಿಕರವಾಗಿದೆ. ಇದು API ಗಡಿಗಳ ಅಡೆತಡೆಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ನೀವು ಲಾಜಿಕ್ ಬರೆಯುವತ್ತ ಗಮನ ಹರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

Source: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3