繁体   English   中英

使用 FastAPI 向 APIRouter 的每个路由注入参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM