I want to add an auth_required
decorator to my endpoints. (Please consider that this question is about decorators, not middleware)
So a simple decorator looks like this:
def auth_required(func):
def wrapper(*args, **kwargs):
if user_ctx.get() is None:
raise HTTPException(...)
return func(*args, **kwargs)
return wrapper
So there are 2 usages:
@auth_required
@router.post(...)
or
@router.post(...)
@auth_required
The first way doesn't work because router.post
creates a router that saved into self.routes
of APIRouter object. The second way doesn't work because it fails to verify pydantic object. For any request model, it says missing args, missing kwargs
.
So my question is - how can I add any decorators to FastAPI endpoints? Should I get into router.routes
and modify the existing endpoint? Or use some functools.wraps
like functions?
from How to add a custom decorator to a FastAPI route?
No comments:
Post a Comment