[英]Inject parameter to every route of an APIRouter using FastAPI
使用 FastAPI 的APIRouter
,我知道您可以通过dependencies
参数传递依赖项。 我看到的每个示例都有一个不返回任何内容的依赖项。 我一直在研究代码,但我猜我不明白如何做我想做的事,知道那是不可能的; 我总是可以将依赖项添加到每条路线。
my_module = APIRouter(prefix="/abc", dependencies=[Depends(get_permissions)])
@my_module.get('/')
def route_1(permissions: Permissions):
pass
@my_module.get('/a')
def route_2(permissions: Permissions):
pass
我想做这样的事情,通过get_permissions
检索权限并将其注入每个路由。
解决此问题的方法是将返回值存储到request.state
中,如本答案中所述(参见State
实现):
from fastapi import Request
def get_permissions(request: Request):
request.state.my_attr = 'some value'
# ...
之后,在端点内,您可以检索该属性,如本答案中所述,如下所示:
router = APIRouter(prefix='/abc', dependencies=[Depends(get_permissions)])
@router.get('/')
def route_1(request: Request):
return request.state.my_attr
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.