gpt4 book ai didi

python - FastAPI:如何访问依赖项内的 APIRoute 对象

转载 作者:行者123 更新时间:2023-12-05 01:33:51 25 4
gpt4 key购买 nike

我正在使用 FastAPI,而主应用程序正在使用 include_router向 fastAPI 应用程序添加额外的路由。

我想在所有路线上添加通用验证。我在文档中发现您可以通过在包含路由器时使用依赖项来实现此目的。

https://fastapi.tiangolo.com/tutorial/bigger-applications/#the-main-fastapi

这行得通,并由所有 http 请求执行。到目前为止一切都很好!

现在,我想知道在这个通用验证函数中(在所有路由中使用 Depends() 注入(inject))调用该函数的路由是什么。

我找到了访问实际请求的方法(使用 fastapi.routing.Request 作为函数的输入参数)但我想访问函数或 APIRoute 本身的名称 .

from fastapi import FastAPI, Depends
from fastapi.routing import Request, APIRoute

async def check_permission(req: Request, route: APIRoute):
print("test me")

app = FastAPI()
app.include_router(admin.service_api, dependencies=[Depends(check_permission)])

RuntimeError: no validator found for <class 'fastapi.routing.APIRoute'>

也许这是个坏主意,我应该换一种方式吗?非常感谢所有建议。谢谢。

最佳答案

我想我找到了解决方法(通过使用 Request 对象)。也许它不是很 Pythonic:

async def check_permission(req: Request):
f = req.scope['endpoint']
# f is the function object of the fast api route endpoint

关于python - FastAPI:如何访问依赖项内的 APIRoute 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64263470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com