Как добавить собственный декоратор к маршруту FastAPI?Python

Программы на Python
Anonymous
Как добавить собственный декоратор к маршруту FastAPI?

Сообщение Anonymous »

Я хочу добавить декоратор auth_required к своим конечным точкам.
(Пожалуйста, учтите, что этот вопрос касается декораторов, а не промежуточного программного обеспечения)
Простой декоратор выглядит так:

Код: Выделить всё

def auth_required(func):
def wrapper(*args, **kwargs):
if user_ctx.get() is None:
raise HTTPException(...)
return func(*args, **kwargs)
return wrapper
Итак, есть два варианта использования:

Код: Выделить всё

@auth_required
@router.post(...)
или

Код: Выделить всё

@router.post(...)
@auth_required
Первый способ не работает, поскольку router.post создает маршрутизатор, который сохраняется в self.routes объекта APIRouter. Второй способ не работает, поскольку не удается проверить pydantic объект. Для любой модели запроса написано, что отсутствуют аргументы, отсутствуют kwargs.
Итак, мой вопрос: как я могу добавить какие-либо декораторы к конечным точкам FastAPI? Должен ли я войти в router.routes и изменить существующую конечную точку? Или использовать функции типа functools.wraps?

Подробнее здесь: https://stackoverflow.com/questions/644 ... tapi-route

Вернуться в «Python»