⚙️✨ شاید براتون پیش اومده باشه که نیاز پیدا کرده باشید تا بدون دغدغه یه REST API رو صدا کنید، جواب دلخواهتون رو بگیرید و کارتون رو پیش ببرید.

⚙️✨ شاید براتون پیش اومده باشه که نیاز پیدا کرده باشید تا بدون دغدغه یه REST API رو صدا کنید، جواب دلخواهتون رو بگیرید و کارتون رو پیش ببرید.


این API رو شاید از روی سرور صدا کنید، یا شاید در قالب کد بکند یا تست، شاید هم از روی کلاینت و در قالب کد فرانت...

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


مفهوم JSON Fake Server چیز جدیدی نیست، نمونه‌های متعددی هم داره که برای توسعه تست یا نمونه‌سازی (Prototyping) استفاده می‌شن. چیزی که بدون نیاز به تنظیمات پیچیده، بلافاصله آماده استفاده باشه.


📃 معرفی اولیه یک ابزار:


- بدون نیاز به تعریف نوع‌داده یا مسیرها (route) »» داده‌ها به صورت پویا مدیریت می‌شن و نیازی به تعریف نوع‌داده یا مسیرهای API نیست (routing).


- ذخیره داده‌ها در فایل JSON: داده‌هایی که با متدهای POST یا PUT می‌فرستیم سمتش در یک فایل JSON ساده ذخیره می‌شوند و نیازی به پایگاه داده وجود ندارد.


- نصب و راه‌اندازی آسون: هیچ پیش‌نیازی نداره و تنها با اجرای سرور، API آماده استفاده است. نصبش هم با کامندلاین یا داکر یا…


- پیروی از شیوه‌های توصیه‌شده طراحی API: سعی شده تا ابزار تمامی اصول یک API استاندارد رو رعایت کنه و می‌تونه به‌عنوان یک مرجع برای طراحی API استفاده بشه.


- چند سکویی: می‌تونید این ابزار را روی ویندوز، لینوکس و مک اجرا کنید، یا با استفاده از داکر.


- پشتیبانی از مدل‌های متنوع مثل GraphQL



📌 قابلیت‌های اصلی


- پشتیبانی از همه عملیات CRUD: منظورم متدهای HTTP مثل GET، PUT، POST، PATCH و DELETE.


- پشتیبانی از عملیات اطلاعات‌گیری از منابع: مثل HEAD و OPTIONS.


- مدیریت تأخیر و خطا: می‌تونید تأخیر و خطاها رو برای درخواست‌ها شبیه‌سازی کنید (مثلا بگید بعد از ۲ ثانیه پاسخ بده یا خطای ۵۰۲ برگردون).


- تایید هویت: از روش‌های توکن، Basic و کلید API پشتیبانی می‌کنه.


- پشتیبانی از WebSocket: برای دریافت اعلان‌های تغییر داده.


- پشتیبانی از فایل‌های استاتیک و Swagger: برای مستندسازی و تست API.


- فیلتراسیون، صفحه‌بندی و جستجوی متنی: برای مدیریت داده‌ها در سناریوهای پیچیده‌تر.


- پشتیبانی از GraphQL: قابلیت آزمایشی برای کوئری‌ها و Mutationهای GraphQL.


- کشینگ و مدیریت تداخلات داده‌ها با استفاده از ETag: برای بهبود عملکرد و هماهنگی درخواست‌ها.


- پشتیبانی از فرمت‌های مختلف خروجی: شامل JSON، CSV و XML.


🛠 سرور جعلی JSON چجوری کار می‌کنه؟


جواب کوتاه: خیلی ساده 😅


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


همون‌طور که عرض کردم این نوع نرم‌افزار، یک مفهوم رایج است، و منحصر به یک ابزار نیست. شاید معروف‌ترینش json-server با بیش از ۷۳هزار ستاره در گیت‌هابه! ولی مشابه دات‌نتی هم داره، dotnet-fake-json-server البته با ۳۸۸ ستاره 😂 و اینکه ۲ ساله آپدیت نشده و با دات‌نت ۶ توسعه داده شده، من این چند روز بعد از ساعت کاری، دارم روی ارتقا‌ئش روی دات‌نت ۹ کار می‌کنم و امیدوارم زودتر جمع شه و pull request بدم.


fake-server --file data.json --urls http://localhost:57602


جمع‌بندی: اگر با REST کار می‌کنید یا GraphQL حتمن OpenAPI و کار با این نوع ابزارها رو خوب و دقیق یاد بگیرید. اگر توی پروژه‌هاتون REST API زیاد دارید، خوبه که روی روش‌های tracing خصوصا وقتی APIها زنجیره می‌شن، دیزاین‌پترن‌های مرتبط با مایکروسرویس یا سیستم‌های توزیع‌شده رو تمرین کنید و هرگز بدون fake و test پیش نرید 😉


💬 اگر موضوع جالبی براتون هست بگید تا ویدیو کوتاه یا مثال بریم باهاش 😊