حدود الطلبات

نستخدم @nestjs/throttler لحماية الـ API.

الحد الافتراضي

100 طلب/دقيقة لكل IP. كافٍ للاستخدام البشري الطبيعي + معظم التكاملات. الحدود محسوبة على نافذة منزلقة (sliding window).

ترويسات الاستجابة

كل استجابة تحوي:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1716800000
  • X-RateLimit-Limit — الحد الأقصى في النافذة.
  • X-RateLimit-Remaining — كم متبقّي قبل 429.
  • X-RateLimit-Reset — Unix timestamp لمتى يُعاد التعداد.

الاستجابة عند التجاوز

HTTP/1.1 429 Too Many Requests
Retry-After: 47

{
  "statusCode": 429,
  "message": "ThrottlerException: Too Many Requests"
}

الترويسة Retry-After تخبرك بعدد الثواني قبل المحاولة مجدّداً.

حدود أشد لبعض المسارات

المسارات الحسّاسة (مثل /api/auth/login) عليها throttle أشد لمنع brute-force. هذه الحدود مطبّقة على مستوى الـ controller عبر @Throttle().

تجاوز الحد بأمان
لو احتجت أعلى throughput (مثل migration دفعي)، استخدم exponential backoff: ابدأ بـ 1s، ثم 2s، ثم 4s… ولا تتجاوز 32s. هذا يحترم الـ Retry-After ولا يغمر السيرفر.