логику рейтлимитинга хочу сделать через декоратор эндпойнта, а параметры (limit, duration) хочу проставить через deps для особенных эндпойнтов. В декораторе хочу отловить эти параметры, если параметров нет, фоллбэкаться на дефолтные параметры.
Такая проблема:
Эндпойнтов много, не хочется в эндпойнтах менять аргументы, но внутри декоратора нужно обязательно отловить или deps или fastapi.Request. Можно ли по умному продекорировать так, чтобы добавить fastapi.Request как обязательный аргумент, не меняя каждый эндпойнт?
Может middleware?
Глобальный лимит можно, а per user? Если юзер ставится через депс А параметризовать конкретный эндпойнт? Не хотелось бы делать это где-то на стороне, параметры эндпойнта должны ставится там же
То есть, рейт лимит хочешь явно помечать декоратором каждый эндпоинт?
да, но прописывать декоратор везде необязательно, можно достать эндпойнты из аппки и продекорировать их при инициализации аппки
Можно роут кастомный сделать. Тогда будет возможность обернуть роуты и хранить глобальный стейт тех функций, которым назначены недефолтные лимиты. Декоратор, в который будет оборачиваться роут, должен сначала сходить в стейт (можно словарик), посмотреть на кастомные лимиты, а если их нет, то использовать дефолтные
Обсуждают сегодня