يتيح tRPC أمان الأنواع من الطرف إلى الطرف بين الواجهة الأمامية والخلفية دون مخططات أو توليد شيفرة أو تعقيد REST/GraphQL.
كيف يعمل tRPC
عرّف الإجراءات (procedures) على الخادم، واستدعِها مع استنتاج كامل للأنواع على العميل:
الخادم
import { initTRPC } from "@trpc/server";
import { z } from "zod";
const t = initTRPC.create();
export const appRouter = t.router({
user: t.router({
getById: t.procedure
.input(z.string())
.query(({ input }) => {
return db.users.findById(input);
}),
create: t.procedure
.input(z.object({ name: z.string(), email: z.string().email() }))
.mutation(({ input }) => {
return db.users.create(input);
}),
}),
});
export type AppRouter = typeof appRouter;
العميل
import { createTRPCClient } from "@trpc/client";
import type { AppRouter } from "./server";
const trpc = createTRPCClient<AppRouter>({ url: "/api/trpc" });
// Full type inference!
const user = await trpc.user.getById.query("123");
const newUser = await trpc.user.create.mutate({ name: "John", email: "john@example.com" });
المزايا
- لا حاجة لملفات مخططات أو توليد شيفرة
- أخطاء الأنواع تظهر فوراً عبر المكدّس بالكامل
- يعمل مع React Query بشكل مدمج
- اشتراكات (Subscriptions) للبيانات الفورية
التعليقات (0)
اترك تعليقًا
لا توجد تعليقات بعد. كن أول من يشارك أفكاره!