🚀🚀 تست رفتارها و خطاهای API به سادگی، با Dev Proxy
—————————————————————————
تا حالا شده موقع توسعه یه اپلیکیشن، API ای که ازش استفاده میکردید یهو به مشکل بخوره؟ مثلاً سرور پاسخ نده، تأخیر داشته باشه، یا با خطای محدودیت نرخ (Rate Limit) روبهرو بشین؟ خب، اگه یه اپلیکیشن اصولی میسازین، باید بدونین که این اتفاقات واقعیان و ممکنه تجربه کاربر رو خراب کنن.
برای اینکه این مشکلات رو قبل از اینکه وارد دنیای واقعی بشین شبیهسازی کنین، یه ابزار خیلی خوب به اسم Dev Proxy موجود داره برای شبیهسازی این مشکلات. با Dev Proxy میتونین رفتارهای مختلف رو شبیهسازی کنین و مطمئن بشین اپلیکیشنتون تو هر شرایطی سر بلند بیرون میاد.
♻️ کاربرد Dev Proxy: کجا به درد میخوره؟
در واقع Dev Proxy دقیقاً یه پروکسی شبکه است که بین اپلیکیشن شما و API قرار میگیره. وظیفهاش شبیهسازی شرایطیه که ممکنه یه API تو دنیای واقعی تجربه کنه. مثل:
- ایجاد تأخیر (Latency): شبیهسازی شرایطی که سرور کند پاسخ میده.
- خطاهای HTTP: مثل خطاهای 500 (Internal Server Error)، یا 404 (Not Found) یا حتی 429 (Too Many Requests).
- خطای Rate Limiting: مثلا وقتی که اپلیکیشن شما API رو صدا میکنه ولی با خطای محدودیت نرخ درخواستها روبرو میشه چی میشه.
- حذف دادهها یا پاسخهای ناقص از طرف API
⚙️ مثال عملی:
فرض کنین یه اپلیکیشن مالی نوشتین که نرخ تبدیل ارزها رو از یه API میگیره. حالا، اگه API به هر دلیلی کند بشه یا خطا بده، اپلیکیشن شما نباید متوقف بشه یا داده اشتباه نشون بده. با Dev Proxy میتونید این سناریوها رو شبیهسازی کنید و رفتار اپلیکیشن رو در این شرایط بسنجین.
یکی از خوبیهای Dev Proxy اینه که به زبان یا تکنولوژی خاصی وابسته نیست. عملا یه ابزار جمعوجوره که روی مک، لینوکس یا ویندوز نصب میشه و شما میتونید ازش برای هر اپلیکیشنی که با API از نوع HTTP REST یا gRPC کار میکنه، استفاده کنید. فرقی هم نداره اپلیکیشن داتنت، جاوا، پایتون، یا جاوااسکریپت باشه.
من قدیم از Mountebank استفاده میکردم ولی از ده سال پیش دیگه آپدیت نداد، بعدش postman mock server و مدتی از WireMock و یک سالی میشه که اکثرا از Dev Proxy استفاده میکنم، تقریبا از زمانی که دیگه کمکم به ابزار خوبی تبدیل شد، با اینکه هنوز به نسخه ۱ نرسیده ولی اکثر نیازها رو برای توسعه و تست برآورده میکنه و به راحتی توی CI/CD قرار میگیره.
گیتهاب
مستندات رسمی
نصب روی ویندوز:
winget install Microsoft.DevProxy
نصب رو مک:
brew tap microsoft/dev-proxy
brew install dev-proxy
نصب روی لینوکس:
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
مثال:
برای شبیه سازی تاخیر ۲ ثانیهای در پاسخ دادن:
dev-proxy --latency 2000
برای برگردوندن خطای ۵۰۰
dev-proxy --error 500
✨ نظرتون چیه؟ بعد از انتشار ویدیو aspire بریم سراغ ویدیو آموزشی براش؟
—————————————————————————
تا حالا شده موقع توسعه یه اپلیکیشن، API ای که ازش استفاده میکردید یهو به مشکل بخوره؟ مثلاً سرور پاسخ نده، تأخیر داشته باشه، یا با خطای محدودیت نرخ (Rate Limit) روبهرو بشین؟ خب، اگه یه اپلیکیشن اصولی میسازین، باید بدونین که این اتفاقات واقعیان و ممکنه تجربه کاربر رو خراب کنن.
برای اینکه این مشکلات رو قبل از اینکه وارد دنیای واقعی بشین شبیهسازی کنین، یه ابزار خیلی خوب به اسم Dev Proxy موجود داره برای شبیهسازی این مشکلات. با Dev Proxy میتونین رفتارهای مختلف رو شبیهسازی کنین و مطمئن بشین اپلیکیشنتون تو هر شرایطی سر بلند بیرون میاد.
♻️ کاربرد Dev Proxy: کجا به درد میخوره؟
در واقع Dev Proxy دقیقاً یه پروکسی شبکه است که بین اپلیکیشن شما و API قرار میگیره. وظیفهاش شبیهسازی شرایطیه که ممکنه یه API تو دنیای واقعی تجربه کنه. مثل:
- ایجاد تأخیر (Latency): شبیهسازی شرایطی که سرور کند پاسخ میده.
- خطاهای HTTP: مثل خطاهای 500 (Internal Server Error)، یا 404 (Not Found) یا حتی 429 (Too Many Requests).
- خطای Rate Limiting: مثلا وقتی که اپلیکیشن شما API رو صدا میکنه ولی با خطای محدودیت نرخ درخواستها روبرو میشه چی میشه.
- حذف دادهها یا پاسخهای ناقص از طرف API
⚙️ مثال عملی:
فرض کنین یه اپلیکیشن مالی نوشتین که نرخ تبدیل ارزها رو از یه API میگیره. حالا، اگه API به هر دلیلی کند بشه یا خطا بده، اپلیکیشن شما نباید متوقف بشه یا داده اشتباه نشون بده. با Dev Proxy میتونید این سناریوها رو شبیهسازی کنید و رفتار اپلیکیشن رو در این شرایط بسنجین.
یکی از خوبیهای Dev Proxy اینه که به زبان یا تکنولوژی خاصی وابسته نیست. عملا یه ابزار جمعوجوره که روی مک، لینوکس یا ویندوز نصب میشه و شما میتونید ازش برای هر اپلیکیشنی که با API از نوع HTTP REST یا gRPC کار میکنه، استفاده کنید. فرقی هم نداره اپلیکیشن داتنت، جاوا، پایتون، یا جاوااسکریپت باشه.
من قدیم از Mountebank استفاده میکردم ولی از ده سال پیش دیگه آپدیت نداد، بعدش postman mock server و مدتی از WireMock و یک سالی میشه که اکثرا از Dev Proxy استفاده میکنم، تقریبا از زمانی که دیگه کمکم به ابزار خوبی تبدیل شد، با اینکه هنوز به نسخه ۱ نرسیده ولی اکثر نیازها رو برای توسعه و تست برآورده میکنه و به راحتی توی CI/CD قرار میگیره.
گیتهاب
مستندات رسمی
نصب روی ویندوز:
winget install Microsoft.DevProxy
نصب رو مک:
brew tap microsoft/dev-proxy
brew install dev-proxy
نصب روی لینوکس:
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
مثال:
برای شبیه سازی تاخیر ۲ ثانیهای در پاسخ دادن:
dev-proxy --latency 2000
برای برگردوندن خطای ۵۰۰
dev-proxy --error 500
✨ نظرتون چیه؟ بعد از انتشار ویدیو aspire بریم سراغ ویدیو آموزشی براش؟