بازگشت به مقالات

Next.js · TypeScript
لایه API type-safe با App Router و Zod
۱۴۰۲ آذر · 10 دقیقه مطالعه
Generics تایپاسکریپت بهتنهایی از محصول App Router محافظت نمیکند. داده runtime از مرورگر، WebView و API شریک همچنان غلط میآید. الگوی استاندارد ما: در لبه parse کن، به داخل اعتماد کن.
استک مرز
- اسکیمای Zod برای query، body و params
- DTO مشترک برای UI و سرور
- نوع Result برای خطاهای دامنه در برابر ۵۰۰
- هوکهای کلاینت که فقط خروجی parseشده میبینند
نکات App Router
Server Action و route handler از یک اسکیما سود میبرند. یک اسکیما هم resolver فرم و هم safeParse سرور را تغذیه میکند. payload نامعتبر به Prisma نمیرسد.
خطا بهعنوان سطح محصول
مسیر موفقیت typed آسان است؛ شکست typed کار ارشد است. خطاهای Zod به خطای فیلد ویزارد و تعارضهای دامنه به کد خطای پایدار برای ترجمه FA/EN نگاشت میشوند.
افراطهای رایج
- تولید type از OpenAPI بدون validation runtime
- بردن مدل Prisma به باندل کلاینت
- پرتاب Error خام بدون کد در Server Actions
چکلیست پذیرش
- همه ورودیهای خارجی را فهرست کنید.
- اول اسکیما، بعد UI.
- شکست parse را با request id لاگ کنید.
- فیچری که
safeParseرا دور میزند merge نکنید.