𝗧𝗲𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 ਵਿੱਚ tRPC: API ਡਿਵੈਲਪਮੈਂਟ ਨੂੰ ਸਰਲ ਬਣਾਓ
ਇੱਕ API ਬਣਾਉਣ ਦਾ ਮਤਲਬ ਆਮ ਤੌਰ 'ਤੇ REST ਜਾਂ GraphQL ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਦੀ ਚੋਣ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਰੂਟਸ (routes) ਸੈੱਟ ਕਰਨ, ਸਕੀਮਾ (schemas) ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ, ਅਤੇ ਆਪਣੇ ਫਰੰਟਐਂਡ (frontend) ਅਤੇ ਬੈਕਐਂਡ (backend) ਵਿਚਕਾਰ ਟਾਈਪਸ (types) ਨੂੰ ਸਿੰਕ ਕਰਨ ਵਿੱਚ ਸਮਾਂ ਬਿਤਾਉਂਦੇ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਦੋਵਾਂ ਪਾਸਿਆਂ 'ਤੇ TypeScript ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਪ੍ਰਕਿਰਿਆ ਭਾਰੀ ਮਹਿਸੂਸ ਹੁੰਦੀ ਹੈ। ਤੁਹਾਨੂੰ ਇੱਕੋ ਟਾਈਪਸ ਦੋ ਵਾਰ ਲਿਖਣੇ ਪੈਂਦੇ ਹਨ।
tRPC ਇਸ ਵਰਕਫਲੋ (workflow) ਨੂੰ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ ਵੱਖਰੇ API ਕੰਟਰੈਕਟ ਦੀ ਲੋੜ ਨੂੰ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਸ ਦੀ ਬਜਾਏ, ਇਹ ਤੁਹਾਡੇ ਸਰਵਰ ਅਤੇ ਕਲਾਇੰਟ ਵਿਚਕਾਰ ਟਾਈਪਸ ਨੂੰ ਆਪਣੇ ਆਪ ਸਾਂਝਾ ਕਰਨ ਲਈ TypeScript ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
tRPC ਦੀ ਵਰਤੋਂ ਕਿਉਂ ਕਰੀਏ?
- ਮੈਨੂਅਲ ਟਾਈਪ ਸਿੰਕਿੰਗ ਦੀ ਲੋੜ ਨਹੀਂ: ਤੁਸੀਂ ਸਰਵਰ 'ਤੇ ਇੱਕ ਫੰਕਸ਼ਨ ਲਿਖਦੇ ਹੋ ਅਤੇ ਕਲਾਇੰਟ ਤੁਰੰਤ ਇਨਪੁਟ ਅਤੇ ਆਉਟਪੁੱਟ ਟਾਈਪਸ ਨੂੰ ਜਾਣ ਲੈਂਦਾ ਹੈ।
- ਕੋਡ ਜਨਰੇਸ਼ਨ ਦੀ ਲੋੜ ਨਹੀਂ: ਟਾਈਪਸ ਬਣਾਉਣ ਲਈ ਤੁਹਾਨੂੰ ਵਾਧੂ ਟੂਲ ਚਲਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
- ਸਕੀਮਾ ਡ੍ਰਿਫਟ (schema drift) ਦੀ ਸਮੱਸਿਆ ਨਹੀਂ: ਕਿਉਂਕਿ ਕਲਾਇੰਟ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਸਰਵਰ ਟਾਈਪਸ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਤੁਹਾਡਾ ਫਰੰਟਐਂਡ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਦੇ ਨਾਲ ਸਿੰਕ ਰਹਿੰਦਾ ਹੈ।
- ਤੇਜ਼ ਡਿਵੈਲਪਮੈਂਟ: ਇਹ ਇੱਕ ਨੈੱਟਵਰਕ ਰਿਕਵੈਸਟ ਕਰਨ ਦੀ ਬਜਾਏ ਇੱਕ ਲੋਕਲ ਫਾਈਲ ਵਿੱਚ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਨ ਵਾਂਗ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ।
ਰਵਾਇਤੀ ਤਰੀਕਿਆਂ ਵਿੱਚ ਕੁਝ ਨੁਕਸਾਨ ਹਨ। REST ਲਈ ਮੈਨੂਅਲ fetch ਕਾਲਾਂ ਅਤੇ ਡੁਪਲੀਕੇਟ ਟਾਈਪਸ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। GraphQL ਇੱਕ ਸਕੀਮਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਪਰ resolvers ਅਤੇ codegen ਨਾਲ ਗੁੰਝਲਦਾਰਤਾ ਵਧਾ ਦਿੰਦਾ ਹੈ।
tRPC ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਨੂੰ type-safe ਫੰਕਸ਼ਨਾਂ ਦੇ ਇੱਕ ਸਮੂਹ ਵਜੋਂ ਮੰਨਦਾ ਹੈ। ਤੁਸੀਂ ਰੂਟਰਾਂ (routers) ਵਿੱਚ ਪ੍ਰੋਸੀਜਰ (procedures) ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹੋ। ਕਲਾਇੰਟ ਤੁਹਾਡੇ ਰੂਟਰ ਟਾਈਪ ਨੂੰ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ ਅਤੇ ਇਹਨਾਂ ਪ੍ਰੋਸੀਜਰਾਂ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਕਾਲ ਕਰਦਾ ਹੈ।
ਉਦਾਹਰਨ ਵਜੋਂ ਫਲੋ:
- ਸਰਵਰ 'ਤੇ ਵੈਲੀਡੇਸ਼ਨ (ਜਿਵੇਂ ਕਿ Zod) ਦੇ ਨਾਲ ਇੱਕ ਪ੍ਰੋਸੀਜਰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ।
- ਰੂਟਰ ਟਾਈਪ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰੋ।
- ਪੂਰੀ autocompletion ਅਤੇ type safety ਦੇ ਨਾਲ ਕਲਾਇੰਟ 'ਤੇ ਉਸ ਪ੍ਰੋਸੀਜਰ ਨੂੰ ਕਾਲ ਕਰੋ।
tRPC ਦੀ ਵਰਤੋਂ ਕਦੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ:
- ਤੁਹਾਡਾ ਫਰੰਟਐਂਡ ਅਤੇ ਬੈਕਐਂਡ ਦੋਵੇਂ TypeScript ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ।
- ਤੁਸੀਂ ਸਟੈਕ (stack) ਦੇ ਦੋਵਾਂ ਪਾਸਿਆਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦੇ ਹੋ।
- ਤੁਸੀਂ ਅੰਦਰੂਨੀ ਟੂਲ, ਐਡਮਿਨ ਡੈਸ਼ਬੋਰਡ, ਜਾਂ ਫੁੱਲ-ਸਟੈਕ Next.js ਐਪਸ ਬਣਾ ਰਹੇ ਹੋ।
- ਤੁਸੀਂ monorepo ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹੋ।
tRPC ਤੋਂ ਕਦੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ:
- ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੇ ਵੱਖ-ਵੱਖ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਇੱਕ ਪਬਲਿਕ API ਬਣਾ ਰਹੇ ਹੋ।
- ਤੁਹਾਡੇ ਕਲਾਇੰਟ Python ਜਾਂ Go ਵਰਗੀਆਂ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ।
- ਤੁਹਾਨੂੰ ਗੁੰਝਲਦਾਰ API versioning ਦੀ ਲੋੜ ਹੈ।
tRPC ਹਰ ਸਥਿਤੀ ਵਿੱਚ REST ਜਾਂ GraphQL ਦਾ ਬਦਲ ਨਹੀਂ ਹੈ। ਜਦੋਂ ਤੁਹਾਡਾ ਸਟੈਕ ਇਕਜੁੱਟ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਰਫਤਾਰ ਅਤੇ ਸੁਰੱਖਿਆ ਲਈ ਇੱਕ ਟੂਲ ਹੈ। ਇਹ API ਦੀਆਂ ਸੀਮਾਵਾਂ ਦੀ ਰੁਕਾਵਟ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ ਲੌਜਿਕ (logic) ਲਿਖਣ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਨ ਦਿੰਦਾ ਹੈ।
ਸਰੋਤ: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3