تخطَّ إلى المحتوى

الـ Rate Limiting: احمي API routes

الدرس 25 من 38

الهدف

بعد هالدرس تقدر تبني rate limiting يشتغل على الـ edge بـ Upstash Redis — يحمي كل API routes من الاستخدام الزائد — بدون ما تكتب أكثر من 30 سطر كود.

ليش هذا الحين؟

الـ real-time جاهز. الحين نحمي الـ API. ترى حتى لو ما تتوقع abuse، يصير: سكربت مستخدم فيه loop غلط، bot يحاول يـ brute force الـ auth، أو مستخدم يضغط زر 100 مرة. بدون rate limiting، السيرفر مالك يتجمّد وكل المستخدمين يتأثرون. الـ rate limiting = صحة الـ API.

الفكرة

ليش أغلب الـ API abuse يجي من مستخدمين مسجّلين؟

الـ bots عادة ما يقدرون يتجاوزون الـ authentication. المشكلة الحقيقية هي:

  1. Bugs: كود المستخدم فيه loop يرسل 1000 request في ثانية
  2. Scripts: مستخدم يسوي automation على حسابه
  3. Power users: مستخدم يستخدم التطبيق بشكل ما توقعته

لهذا تحتاج per-user limits — مو بس per-IP.

Sliding Window Algorithm:

مسموح 100 request / دقيقة لكل user
→ كل request يضيف count
→ بعد دقيقة ينصفّر
→ لو تجاوز الـ count، يرجع 429

Upstash Redis:

Redis serverless يشتغل على الـ edge — latency < 5ms. مثالي لـ rate limiting لأن كل request يحتاج check سريع.

محتاج مساعدة؟ راسلنا على mj@shakesbeard.net