Anophel-آنوفل tRPC چیست و چرا باید از آن استفاده کرد؟

tRPC چیست و چرا باید از آن استفاده کرد؟

انتشار:
3
0

ساختن APIهای قوی و کارآمد جنبه حیاتی توسعه نرم افزار است و انتخاب فناوری API مناسب برای ارائه خدمات API سریع، قابل اعتماد و ایمن بسیار مهم است. هنگام انتخاب یک فناوری API، باید عواملی مانند پیچیدگی پروژه، تعداد نقاط پایانی مورد نیاز، ترافیک مورد انتظار و الزامات کلاینت را در نظر بگیرید. همچنین مهم است که مهارت ها و تجربه تیم توسعه خود را در نظر بگیرید، زیرا برخی از فناوری ها ممکن است به منحنی یادگیری تندتری نسبت به سایرین نیاز داشته باشند.در آنوفل، هدف ما آموزش کاربران API در مورد شیوه‌ها و رویه‌های ایمن است و این راهنمای پروتکل tRPC یک گام دیگر در این مسیر است.

پروتکل tRPC چیست؟

tRPC (TypeScript RPC) یک چارچوب RPC پیشرفته است که توسعه API را با پر کردن یکپارچه شکاف ارتباطی کلاینت و سرور متحول می کند. بیایید راهنما را با دانستن معنای اصلی TypeScript Remote Procedure یا بهتر است پروتکل tRPC فراخوانی شروع کنیم. برای مبتدیان، tRPC یکی از راه‌های تولید و استفاده از APIهای Typeafe است به گونه‌ای که هیچ تولید و اسکیمای بخشی از فرآیند نباشد. تا کنون، این ساده‌ترین و سبک‌ترین کتابخانه‌ای است که ما برای فراخوانی تابع backend به سمت کلاینت از هر مکان راه دور داریم.

tRPC برای سهولت توسعه API و فعال کردن ارتباط کلاینت-سرور در پروژه های TypeScript طراحی شده است. قرار دادن پروتکل tRPC به هر دو تیم Backend و Frontend اجازه می دهد تا در TypeScript کار کنند.

هنگامی که پروتکل در بک‌اند کار می‌کند، تیم بک اند را چنان توانمند می‌کند که به راحتی می‌تواند کوئری‌ها را تعریف کند، جهش ایجاد کند و یک نوع یکپارچه ایجاد کند. در فرانت‌اند، tRPC مانند کارخانه‌ای عمل می‌کند که تنها به یک نوع از backend اجازه می‌دهد و درگیر هوک های Reach Query است که بیشتر برای کوئری ها و جهش‌ها استفاده می‌شوند. tRPC دارای تایپ قوی و تکمیل خودکار با TypeScript است که ایمنی نوع و بازخورد بلادرنگ را تضمین می کند. tRPC همچنین انتقال داده‌ها را از طریق یک اتصال WebSocket بهینه می‌کند، عملکرد را بهبود می‌بخشد و به‌روزرسانی‌های real-time را امکان‌پذیر می‌کند.

علاوه بر این، چارچوب tRPC مدیریت خطای قابل تنظیم و اجرای ساده APIهای امن را با پشتیبانی از احراز هویت داخلی و مجوز ارائه می دهد.

هدف tRPC چیست؟

ممکن است کسی بخواهد در مورد اهمیت tRPC و اینکه چرا باید در وهله اول از آن استفاده شود، بیاموزد. خوب، این بخش از راهنما قصد دارد در مورد این موضوع بحث کند. هدف اصلی tRPC این است که بک اند و فرانت اند یک API به خوبی به هم متصل شوند تا داده های حیاتی به آرامی منتقل شوند.


از آنجایی که tRPC یک کتابخانه مبتنی بر TypeScript است، دارای یکپارچگی قوی با IDE است که برای یک تجربه توسعه‌دهنده یکپارچه لازم است. هدف آن ساده‌سازی تماس‌های API با ارائه برنامه‌نویسی و توسعه بدون اسکیما است.


شما می توانید آن را به عنوان وسیله ای مناسب برای حذف پیچیدگی ها از فرآیندها در نظر بگیرید زیرا انواع به طور خودکار تولید می کند. همچنین خروجی ها و ورودی ها به صورت خودکار تأیید می شوند.

tRPC چگونه کار می کند؟

همانطور که در بالا ذکر شد، tRPC بسیار ساده است و برای تولید API به اسکیما ها یا کدها وابسته نیست. از این رو، درک عملکرد آن دشوار نیست. برای شروع هرگونه ارتباط سمت فرانت اند، مراحل لازم است. همانطور که همه می دانیم، رویه ها عناصر قابل ترکیبی هستند که برای فراخوانی داده های بک اند از راه دور استفاده می شوند.


اکنون، tRPC از دو رویه (procedures) استفاده می کند. اولین رویه یک کوئری است که به درخواستی اشاره دارد که کلاینت برای درخواست داده های خاص به کلاینت ارسال می کند. جهش ها دومین رویه پروتکل gRPC است و برای به روز رسانی، حذف یا ایجاد هر گونه داده بک اندی مفید است.


استفاده از monorepo در زمانی که tRPC در آنجا وجود دارد بسیار توصیه می شود زیرا با پروتکل بسیار سازگار است. اگر برنامه های مدرن در حال بررسی باشند، متوجه می شویم که بیش از یک مخزن برای جداسازی بک اند و فرانت اند استفاده می شود.


هنگامی که شخصی تصمیم می گیرد با تعاریف نوع tRPC با monorepo کار نکند، احتمالاً خطاهای متعددی رخ می دهد.

چرا باید از tRPC استفاده کنید

tRPC یک گزینه عالی برای ساخت برنامه های وب قوی و کارآمد است. دلایل اصلی اینکه چرا می خواهید از tRPC به عنوان فناوری API برای برنامه خود استفاده کنید، سهولت استفاده و عملکرد و مقیاس پذیری آن است.

شما می توانید با tRPC در عرض چند دقیقه راه اندازی و اجرا کنید زیرا API ساده و شهودی آن است، و پروتکل باینری کارآمد برای ارتباط، عملکرد و مقیاس پذیری آن را افزایش می دهد. این باعث می شود tRPC برای برنامه هایی که نیاز به رسیدگی به درخواست های پر ترافیک دارند ایده آل باشد.

ویژگی های کلیدی tRPC

در اینجا مروری بر ویژگی هایی است که tRPC را به یک چارچوب RPC ترجیحی تبدیل می کند.


1. تعاریف API با تایپ قوی

یکی از ویژگی‌هایی که tRPC را از سایر چارچوب‌های RPC متمایز می‌کند این است که tRPC تعاریف API با تایپ قوی را با استفاده از سیستم نوع قدرتمند TypeScript اعمال می‌کند. tRPC پایه ای محکم برای فرآیند توسعه API شما فراهم می کند.


به جای بررسی دستی، با tRPC، نقاط انتهایی API و انواع ورودی/خروجی آن‌ها را با رابط‌های TypeScript ساده تعریف می‌کنید، و کامپایلر تضمین می‌کند که کد شما به این تعاریف پایبند است و خطاها را در زمان ساخت به جای زمان اجرا تشخیص می‌دهد. این سطح از نوع ایمنی به شما این امکان را می دهد که API های خود را با اطمینان بازسازی و گسترش دهید.


2. تولید کد خودکار

ساختن API ها می تواند زمان بر باشد و اغلب با کارهای تکراری با احتمال خطای انسانی مواجه می شود. tRPC با ارائه کد خودکار به این نقاط مشکل ساز می‌پردازد. با یک فرمان، tRPC تعاریف API شما را تجزیه و تحلیل می کند و کد لازم را برای کتابخانه های سمت سرور و کلاینت تولید می کند.

این رویکرد خودکار باعث صرفه جویی در زمان گرانبهای توسعه می شود و احتمال ایجاد باگ های ناشی از تولید کد دستی را به حداقل می رساند. شما می توانید بر پیاده سازی منطق تجاری و ارائه ویژگی های با کیفیت بالا تمرکز کنید.


3. پشتیبانی از پروتکل های حمل و نقل چندگانه

tRPC از چندین پروتکل حمل و نقل از جمله WebSockets پشتیبانی می کند. خواه ساخت یک API استاندارد RESTful یا برنامه شما نیاز به ارتباط دوطرفه در زمان واقعی داشته باشد، tRPC شما را تحت پوشش قرار می دهد.


یکپارچه‌سازی یکپارچه tRPC با این پروتکل‌ها به شما این امکان را می‌دهد تا با حفظ یک طراحی API سازگار و زیبا، یکی از بهترین گزینه‌ها را انتخاب کنید. این انعطاف‌پذیری امکانات بی‌پایانی را باز می‌کند و تضمین می‌کند که API‌های شما می‌توانند برای برآورده کردن نیازهای برنامه‌های مدرن مقیاس شوند.


4. کتابخانه های کلاینت و سمت سرور

tRPC چیزی بیش از یک چارچوب RPC است. این کتابخانه کتابخانه های سمت سرویس فرانت اند و سرور را ارائه می دهد که فرآیند توسعه را ساده می کند و یک اکوسیستم منسجم را تقویت می کند. کتابخانه سمت سرویس فرانت اند راه مناسبی برای تعامل با API مبتنی بر tRPC شما فراهم می کند و پیچیدگی های پروتکل ارتباطی زیربنایی را از بین می برد.


در سمت سرور، کتابخانه به‌طور یکپارچه با فریم‌ورک‌های محبوبی مانند Next.js ادغام می‌شود و به شما امکان می‌دهد APIهایی بسازید که بدون زحمت با استک موجود شما هماهنگ شوند. با این رویکرد جامع، tRPC به شما این امکان را می دهد که به راحتی راه حل های سرتاسری ایجاد کنید، کد boilerplate را کاهش دهید و قابلیت استفاده مجدد کد را ارتقا دهید.

معایب tRPC

با وجود نتایج چشمگیر فوق الذکر، tRPC بی عیب و نقص نیست. محدودیت های آشکاری دارد که باید قبل از شروع استفاده از tRPC در نظر گرفته شود.


محدودیت یا عیب اصلی tRPC این است که شما را با TypeScript محدود می کند. شما نمی توانید با زبان های دیگر کار کنید یا حتی تا حدی با آنها همکاری کنید. اما، با تمام چارچوب های جاوا اسکریپت پیشرو سازگار است و می تواند به راحتی با پروژه های جاوا اسکریپت در حال انجام شما جفت شود.


tRPC زمانی که برای پروژه های کوچک محدود استفاده می شود، می تواند بهترین ها را ارائه دهد. وقتی از آن برای پروژه های گسترده استفاده می کنید، انتظار نداشته باشید که همان سهولت و استحکام را ارائه دهد. اگر همچنان قصد دارید از آن برای پروژه های گسترده استفاده کنید، آماده سرمایه گذاری بیشتر باشید.


در نهایت، مایلیم به شما اطلاع دهیم که مجاز به انجام هرگونه سفارشی سازی برای درخواست های کلاینت نیستید. شما با توابع پیش فرضی که سرور به شما ارائه می دهد گره خورده اید. در کنار درخواست‌ها، سفارشی‌سازی اشتراک نیز پشتیبانی نمی‌شود.

موارد استفاده رایج از tRPC

tRPC بسیار متنوع است. شما می توانید از tRPC برای انواع پروژه ها، از جمله پروژه های ساده تا پیچیده استفاده کنید.


1. معماری میکروسرویس ها

معماری میکروسرویس ها با تجزیه آنها به خدمات جزئی تر و مستقل، به راه حلی برای ساخت برنامه های پیچیده تبدیل شده است. با این حال، هماهنگ کردن ارتباط بین این خدمات می تواند زمان و تلاش لازم را داشته باشد. tRPC به عنوان یک ابزار قدرتمند برای ارتباطات بین سرویس در میکروسرویس ها می درخشد.


با استفاده از tRPC در معماری میکروسرویس ها، می توانید API های واضح و مختصری ایجاد کنید که ارتباط بین سرویس ها را بدون دردسر می کند. رویکرد کد اول tRPC به شما امکان می‌دهد با استفاده از دکوراتورهای TypeScript، نقاط پایانی API را تعریف کنید و یک قرارداد API ساختاریافته و ایمن را ارائه کنید. این امر سربار اسناد دستی را حذف می کند و خطر ناهماهنگی را به حداقل می رساند.


علاوه بر این، tRPC از مکانیسم‌های سریال‌سازی و انتقال داده‌های کارآمد، از جمله پشتیبانی GraphQL و WebSocket، استفاده می‌کند و به میکروسرویس‌ها اجازه می‌دهد تا داده‌ها را به صورت یکپارچه مبادله کنند. با احراز هویت داخلی، مجوز، و پشتیبانی رسیدگی به خطا، tRPC راه حلی جامع برای ارتباط ایمن و قابل اعتماد در اکوسیستم میکروسرویس ارائه می کند.


2. ارتباط بک اند به فرانت اند

ارتباط کارآمد بین بک اند و فرانت‌اند برنامه شما برای ارائه تجربیات کاربر پویا و تعاملی بسیار مهم است. tRPC یک تسهیل کننده استثنایی در این حوزه است که شکاف بین خدمات بک اند و برنامه های کلاینت را پر می کند.


با استفاده از tRPC در یک راه‌اندازی ارتباط بک‌اند به فرانت‌اند، می‌توانید بدون زحمت APIها را در قسمت فرانت اند نمایش دهید. tRPC با پشتیبانی گسترده زبان خود، از جمله TypeScript و JavaScript، ایمنی نوع را تضمین می کند و خطر مشکلات یکپارچه سازی را کاهش می دهد. ژنراتورهای کلاینت داخلی tRPC مصرف آسان API را تقویت می کند و پیکربندی دستی و کد boilerplate را حذف می کند.


همچنین، قابلیت‌های ارتباطی بی‌درنگ tRPC به‌روزرسانی‌های یکپارچه و همگام‌سازی بین سرور و کلاینت را امکان‌پذیر می‌سازد. شما می توانید از یکپارچگی WebSocket tRPCs برای ایجاد کانال های ارتباطی دو جهته برای اعلان های بلادرنگ، به روز رسانی داده های زنده و ویژگی های مشترک استفاده کنید.


3. برنامه های کاربردی real-time

tRPC با ادغام بی‌وقفه قابلیت‌های real-time در APIهای سنتی درخواست پاسخ، پایه‌ای قوی برای ساخت برنامه‌های بلادرنگ ارائه می‌دهد.


با tRPC، می‌توانید عملکرد بلادرنگ را با حاشیه‌نویسی متد ها یا فیلدهای API خاص با دکوراتورهای بلادرنگ فعال کنید. این دکوراتورها اتصالات WebSocket را ایجاد می کنند و هر زمان که داده های مرتبط تغییر می کنند، به روز رسانی های زنده را ارائه می دهند. با استفاده از این ویژگی می توانید برنامه های چت، داشبوردهای بلادرنگ، ویرایشگرهای مشارکتی و بسیاری موارد دیگر بسازید.


علاوه بر این، API اشتراک انعطاف‌پذیر tRPC به کلاینت ها اجازه می‌دهد تا در تغییرات در مجموعه داده‌های خاص مشترک شوند و از همگام‌سازی کارآمد داده‌ها در چندین کلاینت اطمینان حاصل کنند. ترکیب قدرتمندی از قابلیت‌های درخواست-پاسخ و زمان واقعی، tRPC را به گزینه‌ای عالی برای توسعه برنامه‌های کاربردی بسیار تعاملی و پاسخگو تبدیل می‌کند.

آیا tRPC بهتر از GraphQL است؟

در جامعه توسعه دهندگان، tRPC در مقابل GraphQL یک موضوع داغ است. از آنجایی که tRPC اغلب یک نسخه سبک تر از GraphQL در نظر گرفته می شود، این مقایسه واضح است. برای برنامه های کاربردی مدرن، این دو به وفور مورد استفاده قرار می گیرند و مجموعه متفاوتی از امتیازات را ارائه می دهند.


به عنوان مثال، tRPC به دلیل سرعت و استفاده بدون کد مورد علاقه است، در حالی که GraphQL به دلیل توانایی خود در ادغام انواع مختلف داده ها در یک کوئری مشهور است. اما آیا انجام یک مقایسه مستقیم tRPC v/s GraphQL منصفانه است؟


راستش را بخواهید، این مقایسه اخلاقی نیست زیرا هر دو چیزهای کاملاً متفاوتی هستند. GraphQL یک زبان برای کوئری است در حالی که tRPC یک کتابخانه است.


بهتر است به GraphQL به عنوان یک لایه انتقال HTTP اشاره کنیم که می تواند با هر لایه انتقال و پروتکل دیگری جفت شود که نتیجه می گیرد GraphQL یک منبع بسیار انعطاف پذیر است. tRPC وقتی صحبت از انعطاف پذیری می شود ناامید می شود زیرا عمدتاً با TypeScript و JavaScript کار می کند. با وجود اینکه چندین باتری و آداپتور ارائه می شود، انعطاف پذیری پیش فرض محدود است.


tRPC API عمدتاً در فرانت‌اند استفاده می‌شود و مسئول ارتباط یکپارچه با بک اند است. هنگامی که باید هر تماس API را با backend انجام دهید، به tRPC دستور می دهید و کار را انجام می دهد. بنابراین، بهتر است tRPC را یک ORM API بنامیم.


حال، بیایید این دو را از نظر قابلیت استفاده مقایسه کنیم. ما تردید داریم که اعتراف کنیم که تحمل tRPC در مورد سادگی سخت است. این یک ابزار آسان برای استفاده در مقایسه با GraphQL یا هر زبان کوئری دیگری است. این به این دلیل است که هیچ کدی را درخواست نمی کند. وقتی درگیر تولید API GraphQL هستید، باید از کدها و اسکیما استفاده کنید.


این فرآیند طولانی است و شامل مراحلی مانند تعریف اسکیما، نوشتن حل برای جمع آوری دقیق داده ها، و تولید انواع با استفاده از اسکیما می باشد. کل این فرآیند زمان و تلاش زیادی دارد. بهترین کاری که می توانید برای کاهش تلاش ها انجام دهید، استفاده از یک کتابخانه GraphQL با کد اول است که به توسعه دهندگان اجازه می دهد تا حل کننده ها را بنویسند و اسکیما را از آنها استخراج کنند.


تولید API tRPC به هیچ وجه به تولید کد و اسکیما وابسته نیست. توسعه‌دهندگان به سادگی می‌توانند رویه‌ها را تعریف کنند، یک سرور راه‌اندازی کنند و شروع به برقراری ارتباط با backend کنند.


بنابراین، اگر به سادگی مربوط می شود، tRPC بهتر از GraphQL است. اما، این نباید تنها معیار برای نتیجه گیری هر چیزی باشد. هر دو منابع متفاوت با ویژگی های متمایز هستند.


تصمیم گیری اینکه کدام یک از tRPC و GraphQL بهتر است نیاز به درک عمیق تر در جنبه هایی مانند:


چه نوع منابعی مورد نیاز است
اگر اهداف توسعه‌دهنده شما نیاز به جستجو در منابع مختلف داده و جداسازی خدمات دارد، GraphQL انتخاب مناسبی است. زمانی که نیازی به جدا کردن قسمت بک اند و فرانت اند نیست، tRPC ترجیح داده می شود


آیا می خواهید با یک زبان کار کنید یا چندین زبان را ترکیب کنید
اگر آزادی زبان می‌خواهید، بهتر است از GraphQL استفاده کنید زیرا فقط می‌تواند این آزادی را به شما بدهد. tRPC در این بخش سختگیر است و به راحتی با هیچ زبانی جفت نمی شود. فقط با TypeScript کار می کند.


آیا بک اند در ذهن شما بزرگ می شود
در مواقعی، توسعه دهندگان مجبور هستند که بک اند را برای برآوردن نیازهای برنامه های امروزی مقیاس کنند. اگر هدف شما این است، بهتر است از GraphQL استفاده کنید زیرا از مقیاس پذیری پشتیبانی می کند. مقیاس‌پذیری برنامه با کمک اسکیما‌ به دست می‌آید که همگام با Backend و Frontend است.


الزامات توسعه شما چیست؟
شما باید نیازهای توسعه خود را مرتب کنید و آنها را ساده یا پیچیده بدانید. برای نیازهای ساده، پیش بروید و از tRPC استفاده کنید زیرا آسان، ساده و بدون پیچیدگی است. هیچ کدی برای جلوگیری از توسعه وجود ندارد. tRPC کرک را از API ها دور نگه می دارد و آنها را تا حد امکان ساده می کند.


GraphQL می تواند نیازهای پیچیده شما را برطرف کند زیرا کدها، پشتیبانی از زبان های متعدد و اسکیما ها وجود دارد.


ابتدا همه این موارد را مشخص کنید و سپس منبعی را بر اساس آن انتخاب کنید. هر دوی این منابع در سناریوهای مختلف به سرعت خوب هستند. بنابراین، ابتدا مشخص کنید دقیقاً به دنبال چه چیزی هستید و سپس tRPC و GraphQL را انتخاب کنید. و اگر علاقه مند به دانستن در مورد tRPC در مقابل rest هستید، به یاد داشته باشید که برخلاف ts-rest، tRPC استقرار API شما را در قالب یک قرارداد تعریف می کند.

tRPC در مقابل gRPC

از آنجایی که هم gRPC و هم tRPC برای ارائه APIهای تایپ شده ایمن برای سرورها یا کلاینت ها استفاده می شوند، ممکن است برای بسیاری یکسان به نظر برسند. با این حال، تجزیه و تحلیل عمیق تر برخی از تفاوت های قابل دوام را در سطح به ارمغان می آورد. هر دو رویکرد متفاوتی برای تماس‌های API ایمن دارند.


به عنوان مثال، gRPC اینجاست تا از تماس‌های API ایمن با استفاده از پروتکل protobuf پشتیبانی کند. این پروتکل سیم فشرده دارای فایل های پروتکلی است که بعداً برای توسعه کلاینت ها/سرورها استفاده می شود.


با gRPC می‌توانید با زبان‌هایی مانند Python، Java، Go و ++C کار کنید.


اما، gRPC کدهایی تولید می کند که خواندن و دیباگ کردن آنها سخت است. همچنین، هر زمان که اسکیما، از هر نوع، تغییر می کند، کدها باید دوباره تولید شوند. gRPC برای استفاده در اکوسیستم های مرورگر مناسب نیست زیرا خسته کننده و سنگین است.


از طرف دیگر، شما tRPC را به عنوان کتابخانه ای برای تماس های API ایمن نوع دارید. برخلاف gPRC، tRPC سیمی نیست. در واقع از HTTP استفاده می کند. در حالی که کدهای gRPC سخت هستند، پردازش tRPC آسان است. از آنجایی که فقط از TypeScript پشتیبانی می کند، شما آزادی کار با هیچ زبانی را ندارید.


tRPC شما را مجبور به ایجاد کد برای شروع نمی کند. شما می توانید تماس های API ایمن را با تولید اسکیما ها و وارد کردن آنها به کلاینت ها یا سرورها تایپ کنید. این یک ابزار بومی وب است و از مشخصات JSON-RPC استفاده می کند.

gRPC یک جایگزین عملی برای tRPC است

gRPC و tRPC چارچوب های RPC برای ساخت میکروسرویس های کارآمد و مقیاس پذیر هستند. با این حال، تفاوت‌های مهم بین این دو چارچوب، gRPC را به یک جایگزین عملی‌تر برای برخی موارد استفاده می‌کند.

یکی از مزایای gRPC استفاده از HTTP/2 است. HTTP/2 نسخه جدیدتری از پروتکل HTTP است که برای کارآمدتر و قابل اعتمادتر طراحی شده است. این باعث می‌شود gRPC برای مواردی که تأخیر کم و توان عملیاتی بالا حیاتی هستند، مانند برنامه‌های پخش real-time، ایده‌آل باشد.

چه طور باید شروع کرد

همانطور که در بالا ذکر شد، شروع با tRPC علم موشکی نیست. آنقدر ساده است که یک توسعه دهنده تازه کار می تواند بدون هیچ زحمتی از آن استفاده کند. در اینجا مراحل مربوط به استفاده از tRPC برای پروژه های خود آورده شده است.

 

برای نصب از دستور زیر استفاده کنید:

npm install @trpc/server@next @trpc/client@next


رویه ها را تعیین کنید

با تعریف رویه توسعه tRPC API شروع کنید. همانطور که همه می دانیم، رویه ها به توابع مورد نیاز برای توسعه بک اند API اشاره دارند. به طور مشخص، رویه ها از اجزا تشکیل شده اند و می توانند هر چیزی باشند. یک اشتراک، یک جهش یا یک کوئری. هنگامی که روی روترها از آنها استفاده می شود، رویه ها به صورت دسته ای وجود دارند.


بیشتر، اعتبار سنج Zod برای فرآیند تولید رویه استفاده می شود. نقش این ابزار در اینجا این است که اطمینان حاصل شود که ورودی و انتظارات رویه کلاینت با یکدیگر همگام هستند. همانطور که رویه ها تولید می شوند، یک رشته متن اصلی را به عنوان نتیجه کوئری دریافت خواهید کرد.

const t = initTRPC.create();
 
const router = t.router;
const publicProcedure = t.procedure;
 
const appRouter = router({
 greeting: publicProcedure
 .input(z.object({ name: z.string() }))
 .query((req) => {
 const { input } = req;
  
const input: {
 name: string;
}
 
 return {
 text: `Hello ${input.name}` as const,
 };
 }),
});
 
export type AppRouter = typeof appRouter;

سرور HTTP ایجاد کنید

مرحله بعدی ایجاد یک سرور HTTP است. برای این کار به appRouter نیاز دارید. از دستور زیر برای تولید سرور HTTP استفاده کنید.

const { listen } = createHTTPServer({
 router: appRouter,
});
// The API will keep an eye on port 3000 now!
listen(3000);

اگر همه چیز طبق دستورالعمل دنبال شود، یک سرور tRPC کاملاً کاربردی در کمترین زمان اجرا می شود. از آنجایی که tRPC API از چندین روتر پشتیبانی می کند، کار با tRPC React، Fetch API، Node HTTP و بسیاری از سرورهای دیگر آسان خواهد بود.


کلاینت خود را متصل کنید و درخواست کنید

هنگامی که یک سرور کاربردی در کنار خود دارید، اکنون آماده هستید تا یک کلاینت توسعه دهید و به جستجوی داده ها ادامه دهید.

const trpc = createTRPCProxyClient<AppRouter>({
 links: [
 httpBatchLink({
 url: 'http://localhost:3000/trpc',
 }),
 ],
});
const res = await trpc.greeting.query({ name: 'John' }); 
const res: {
 text: `Hello ${string}`;
}

در این کد نمونه، نوع AppRouter در حین ایجاد کلاینت ارسال شده است، به طوری که ما تایپ اسکریپت تکمیل خودکار و Intellisense را به خوبی با API پشتیبان همگام سازی می کنیم. کل فرآیند بدون کد باقی می ماند. اکنون یک tRPC API کاربردی در کنار خود دارید.


نتیجه

همانطور که راهنما به پایان می رسد، ما در مورد tRPC و نحوه عملکرد آن شفاف هستیم. ما آموختیم که این پروتکل راهی آسان برای تایپ کردن یک API بدون درگیر شدن در کدنویسی و اسکیما است. توسعه دهندگان این شانس را دارند که یک API کاربردی را در زمان کمتری توسعه دهند زیرا هیچ کدنویسی در کار نیست. یادگیری آن آسان است و برای مبتدیان عالی است.


با این حال، راهنما یک چیز را روشن می کند که اگر از tRPC استفاده می کنید باید به TypeScript پایبند باشید. همچنین، این فقط برای پروژه های کوچک مناسب است. تجربه شما از tRPC چه می گوید؟ آیا از پیشنهادات آن متقاعد شده اید یا می خواهید تغییرات قابل توجهی را مشاهده کنید؟ نظرات خود را با ما در میان بگذارید.

#trpc#grpc#api#typescript#javascript#graphql#rest_api#nextjs
نظرات ارزشمند شما :
Loading...