خیلی وقتا ممکنه پیش بیاد که بخوایید یه endpoint (یا شایدم کل api ) رو محدود کنید که مثلا فلان ایپی بشتر از فلان تعداد ریکوئست برای یک روز نتونه بزنه.
خب حالا راه حل چیه ؟ کار خیلی راحتیه و کار سختی نیست کافیه توی پروژه go-gin تون یه middleware اضافه کنید. البته اینم یگم که مثل هر چیز دیگه ایی این کارم احتمالا صد ها روش برای انجام دادنش وجود داره ، مثلا شما میتونید همین کارو توی کانفیگ nginx ام انجام بدید.
خب توضیحات بسه بریم middleware رو بنویسیم، پروژتون رو باز کنید و توی بخش middleware ها( که بستگی به شما داره کجا middleware ها رو مینویسید ، مثلا ممکنه یکی توی دایرکتوری به اسم middleware این کارو انجام بده ) یه فایل به اسم دلخواه مثلا LimitIPMiddleware.go بسازید و توش کدای زیر رو بنویسید :
همونطور که میبینید دیگه کاری خاصی نمونده کافیه روی api مورد نظرتون اونو اضافه کنید. اینطوری :
حالا کد اینطوری کار میکنه که هرکی که درخواست میده ایپی شو توی دیتابیس ردیس ( اگه نمیدونید ردیس چیه اینجا یه سر بزنید ) به یه تعدادی (دلخواه) ذخیره میکنه و هر بار(با هر ریکوِست) یکی ازش کم میکنه تا اینکه صفر بشه و در این صورت خروجی با status code too many request ارسال میشه.
قطعا راهای دیگه ایی برای انجام اینکار وجود داره و این یه نوع ساده اش بود . امیدوارم مفید بوده باشه.
موفق باشید.