شروع سریع

ورود یا ساخت حساب جدید

پس از ثبت‌نام، در صورت نیاز می‌توانید رمز عبور را بعداً از داخل پنل کاربری خودتان تنظیم کنید.
تأیید هویت
در حال بارگذاری...
قوانین و شرایط استفاده
۱ ثبت‌نام و حساب کاربری

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

۲ پرداخت و صورتحساب

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

۳ پشتیبانی و تیکت

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

۴ حریم خصوصی

اطلاعات کاربران صرفاً برای ارائه خدمات استفاده می‌شود و از دسترسی غیرمجاز محافظت خواهد شد. ما متعهد به حفظ محرمانگی اطلاعات شما هستیم و هیچ‌گاه اطلاعات شخصی شما را بدون رضایت به اشخاص ثالث ارائه نخواهیم داد.

۵ تغییرات قوانین

این قوانین ممکن است به‌روزرسانی شود؛ آخرین نسخه همیشه در همین صفحه منتشر خواهد شد. توصیه می‌شود به صورت دوره‌ای این صفحه را مطالعه کنید. در صورت تغییرات عمده، از طریق ایمیل یا اعلان داخل سیستم به شما اطلاع خواهیم داد.

امن سریع پشتیبانی ۲۴/۷
اخبار وب

tRPC و API Type-safe بدون Schema

tRPC روشی مدرن برای ساخت APIهای کاملاً Type-safe در اپلیکیشن‌های TypeScript است که بدون نیاز به تعریف Schemaهای جداگانه (مثل REST یا GraphQL) امکان ارتباط امن و دقیق بین...

1405/01/12 1 دقیقه مطالعه 596 بازدید
tRPC و API Type-safe بدون Schema

مشکل رایج در APIهای سنتی

در معماری‌های معمول مثل REST یا GraphQL معمولاً با این چالش روبه‌رو هستیم:

  • تعریف مدل داده در Backend
  • تعریف مجدد همان مدل در Frontend
  • احتمال ناسازگاری بین دو طرف
  • نیاز به Schema یا قرارداد جداگانه

مثلاً:

Backend:

                                
User {
  id: number
  name: string
}

Frontend باید همان مدل را دوباره تعریف کند.

اگر یکی از آن‌ها تغییر کند، ممکن است خطاهای runtime ایجاد شود.

tRPC چیست؟

tRPC یک کتابخانه برای TypeScript است که اجازه می‌دهد:

Frontend مستقیماً توابع Backend را به صورت type-safe فراخوانی کند.

بدون نیاز به:

  • REST endpoints
  • GraphQL schema
  • OpenAPI

در واقع TypeScript خودش قرارداد API می‌شود.

ایده اصلی tRPC

به جای تعریف endpointها، شما procedure تعریف می‌کنید.

مثال ساده:

Backend

                                
const appRouter = router({
  getUser: publicProcedure
    .input(z.string())
    .query(({ input }) => {
      return db.user.findById(input)
    }),
})

Frontend

const user = await trpc.getUser.query("123")

ویژگی مهم:

اگر نوع داده تغییر کند، TypeScript در هر دو سمت خطا می‌دهد.

مزایای اصلی tRPC

Type Safety کامل

تمام درخواست‌ها و پاسخ‌ها توسط TypeScript بررسی می‌شوند.

بدون نیاز به:

  • Swagger
  • GraphQL schema
  • manual typings

حذف Overfetching

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

توسعه سریع‌تر

نیازی به ساخت:

  • Controller
  • DTO
  • API docs

نیست.

یک تابع می‌نویسید و قابل استفاده در frontend می‌شود.

هماهنگی کامل Frontend و Backend

وقتی مدل داده تغییر کند:

TypeScript فوراً تمام خطاها را نشان می‌دهد.

معماری tRPC

ساختار معمول پروژه:

/server
  router.ts
  procedures.ts

/client
  trpc.ts
  components

Router در Backend تعریف می‌شود و type آن به Frontend منتقل می‌شود.

ترکیب محبوب tRPC در اکوسیستم مدرن

tRPC معمولاً با این ابزارها استفاده می‌شود:

  • Next.js
  • React
  • TanStack Query
  • Zod برای validation

این ترکیب یک full-stack type-safe stack ایجاد می‌کند.

مثال کامل ساده

Backend

import { initTRPC } from '@trpc/server'

const t = initTRPC.create()

export const appRouter = t.router({
  hello: t.procedure.query(() => {
    return { message: "Hello world" }
  }),
})

Frontend

const result = await trpc.hello.query()

console.log(result.message)

TypeScript دقیقاً می‌داند خروجی چیست.

چه زمانی tRPC بهترین انتخاب است؟

tRPC مناسب پروژه‌هایی است که:

  • full-stack TypeScript دارند
  • Frontend و Backend در یک codebase هستند
  • تیم توسعه کوچک یا متوسط است
  • سرعت توسعه مهم است

چه زمانی مناسب نیست؟

در برخی سناریوها tRPC انتخاب ایده‌آلی نیست:

  • API عمومی برای third-party ها
  • سیستم‌هایی با چند زبان برنامه‌نویسی
  • microserviceهای مستقل
  • نیاز به API documentation عمومی

در این موارد REST یا GraphQL بهتر هستند.

جمع‌بندی

tRPC یکی از جذاب‌ترین ابزارهای اکوسیستم TypeScript است که توسعه API را بسیار ساده‌تر می‌کند.

با استفاده از tRPC می‌توان:

  • APIهای کاملاً type-safe ساخت
  • از duplication بین frontend و backend جلوگیری کرد
  • سرعت توسعه را افزایش داد
  • خطاهای runtime را کاهش داد

این رویکرد مخصوصاً در اپلیکیشن‌های مدرن React و Next.js بسیار محبوب شده و به عنوان یکی از الگوهای جدید full-stack TypeScript development شناخته می‌شود.

واکنش به این مقاله

اشتراک پریمیوم مجله

جدیدترین ترفندها، نکات مدیریت وبسایت‌ها، مدیریت کسب‌و‌کار و مدیریت فردی با پریمیوم.💡

۱ ماه 99,000 تومان
50%− ۱۲ ماه 999,000 499,000 تومان
اشتراک‌گذاری این مقاله:
دیدگاه‌ها 0
۰ / ۲۰۰۰

هنوز دیدگاهی ثبت نشده

اولین نفری باشید که نظر می‌دهد!

🎧
پشتیبانی آنلاین
پاسخگویی سریع
به "طراحستان" خوش آمدید
قبل از شروع چت لطفا توجه بفرمایید

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

در حال بارگذاری...
APPROVED
Logo

ماموریت ما

ما در طراحستان باور داریم که خلاقیت مرز نمی‌شناسد.

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