ویرگول
ورودثبت نام
Amirreza saki
Amirreza saki
خواندن ۱ دقیقه·۳ سال پیش

محدود کردن ریکوئست ها به یک API در GIN

خیلی وقتا ممکنه پیش بیاد که بخوایید یه endpoint (یا شایدم کل api ) رو محدود کنید که مثلا فلان ایپی بشتر از فلان تعداد ریکوئست برای یک روز نتونه بزنه.

خب حالا راه حل چیه ؟ کار خیلی راحتیه و کار سختی نیست کافیه توی پروژه go-gin تون یه middleware اضافه کنید. البته اینم یگم که مثل هر چیز دیگه ایی این کارم احتمالا صد ها روش برای انجام دادنش وجود داره ، مثلا شما میتونید همین کارو توی کانفیگ nginx ام انجام بدید.

خب توضیحات بسه بریم middleware رو بنویسیم، پروژتون رو باز کنید و توی بخش middleware ها( که بستگی به شما داره کجا middleware ها رو مینویسید ، مثلا ممکنه یکی توی دایرکتوری به اسم middleware این کارو انجام بده ) یه فایل به اسم دلخواه مثلا LimitIPMiddleware.go بسازید و توش کدای زیر رو بنویسید :


همونطور که میبینید دیگه کاری خاصی نمونده کافیه روی api مورد نظرتون اونو اضافه کنید. اینطوری :

حالا کد اینطوری کار میکنه که هرکی که درخواست میده ایپی شو توی دیتابیس ردیس ( اگه نمیدونید ردیس چیه اینجا یه سر بزنید ) به یه تعدادی (دلخواه) ذخیره میکنه و هر بار(با هر ریکوِست) یکی ازش کم میکنه تا اینکه صفر بشه و در این صورت خروجی با status code too many request ارسال میشه.


قطعا راهای دیگه ایی برای انجام اینکار وجود داره و این یه نوع ساده اش بود . امیدوارم مفید بوده باشه.

موفق باشید.






golangprogrammingapigoginlimit ip
شاید از این پست‌ها خوشتان بیاید