Техническое задание: Настройка ограничений запросов (Rate Limiting) и защиты от всплесков трафика
Цель проекта
Реализовать на уровне сервера надёжную систему контроля и ограничения частоты запросов к публичному API для обеспечения стабильности и защиты от злоупотреблений.
Основные требования
1. Базовый функционал Rate-Limiting
- Внедрение ограничений на основе скользящего окна (sliding window).
- Настройка двух независимых уровней лимитов:
- Per-IP: Ограничение количества запросов с одного IP-адреса.
- Per-API-Key: Ограничение количества запросов по уникальному ключу доступа.
- Реализация базовой защиты от бурстов (резких всплесков трафика).
2. Корректное информирование клиентов
- При исчерпании лимита сервер должен возвращать чёткие и понятные HTTP-ответы (например, статус 429 Too Many Requests).
- В заголовках ответа (headers) должны передаваться актуальные данные о лимитах и текущем использовании.
3. Расширенные квоты для партнёров
- Предусмотреть возможность настройки отдельных, повышенных лимитов для запросов, поступающих от партнёрских интеграций или доверенных клиентов.
- Механизм должен быть гибким и управляемым.
Ожидаемый результат
Стабильный и защищённый API, который корректно обрабатывает высокие нагрузки, предотвращает злоупотребления и предоставляет клиентам прозрачную информацию о статусе их запросов.