PrimLagic

ساخت دموی کامل بدون بک‌اند: شبیه‌سازی API با axios-mock-adapter

نویسنده علی عبداللهی · · ۲ دقیقه مطالعه

ساخت دموی کامل بدون بک‌اند: شبیه‌سازی API با axios-mock-adapter

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

ایده

تمام صفحه‌های ClassBan درخواست‌ها را از طریق یک نمونه‌ی مشترک axios می‌فرستند. اگر آن نمونه را با axios-mock-adapter رهگیری کنم، می‌توانم برای هر آدرس (مثل /api/students یا /api/absences) پاسخ را خودم بسازم. هیچ صفحه‌ای عوض نمی‌شود؛ رابط واقعی دست‌نخورده می‌ماند.

چه چیزی شبیه‌سازی شد

  • ورود با نام کاربری و ورود با شماره و کد تأیید ثابت،
  • دانش‌آموزان، معلمان، غیبت‌ها و قالب‌های پیام (CRUD کامل)،
  • ارسال پیامک (فقط در لاگ ثبت می‌شود؛ هیچ پیامکی نمی‌رود)،
  • کاربران و نقش‌ها با همان محدودیت‌های نسخه‌ی اصلی (مثلاً معاون صفحه‌ی مدیریت کاربران را نمی‌بیند)،
  • آمار داشبورد.

داده‌ها در حافظه و در sessionStorage نگه داشته می‌شوند. هر ۳۰ دقیقه و با دکمه‌ی «ریست» به حالت اول برمی‌گردند.

داده‌ی فرضی

دانش‌آموزان با نام‌های فارسی ساختگی از ترکیب تصادفی نام و نام‌خانوادگی ساخته می‌شوند؛ شماره‌ها از الگوی غیرواقعی 0900000xxxx. نکته‌ی کوچک: مولد تصادفی با seed ثابت است تا هر بازدیدکننده همان مجموعه‌ی اولیه را ببیند و ریست قابل‌پیش‌بینی باشد.

مزایا

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

محدودیت‌ها (صادقانه)

  • منطق بک‌اند دوبار نوشته می‌شود (یک‌بار واقعی، یک‌بار شبیه‌ساز)؛ ممکن است با هم ناهمخوان شوند.
  • هر چیزی که فراخوانی مستقیم fetch باشد، توسط axios-mock-adapter رهگیری نمی‌شود. در ClassBan صفحه‌ی «فراموشی رمز» از fetch مستقیم استفاده می‌کرد و باید جداگانه اصلاح می‌شد.
  • امنیت واقعی را تست نمی‌کند؛ دمو نشان‌دهنده‌ی رابط است، نه سرور.
  • نمودار «روند ۷ روز اخیر» فعلاً داده‌ی روزانه ندارد و صاف می‌ماند.

نتیجه

اگر هدف نمایش رابط و جریان کار است، شبیه‌سازی API ارزان‌ترین راه است. اگر هدف تست رفتار واقعی سرور است، نه. دموی کامل را در classban.primlagic.ir می‌توانید ببینید؛ معرفی محصول در صفحه‌ی ClassBan است.

Reactدمومعماری