【发布时间】:2021-01-23 13:21:45
【问题描述】:
我正在使用 FastAPI,而主应用程序使用 include_router 向 fastAPI 应用程序添加额外的路由。
我想在所有路线上添加通用验证。 我在文档中发现,您可以在包含路由器时使用依赖项来实现这一点。
https://fastapi.tiangolo.com/tutorial/bigger-applications/#the-main-fastapi
这很有效,并且正在被所有 http 请求执行。 到目前为止一切都很好!
现在,我想知道在这个通用验证函数内部(在所有路由中使用 Depends() 注入)哪个路由正在调用该函数。
我找到了访问实际请求的方法(使用 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'>
也许这不是一个好主意,我应该以不同的方式来做吗? 非常感谢所有建议。 谢谢。
【问题讨论】:
-
您可以在您的问题中添加一些代码吗?帮助 rn 有点困难。
-
好主意。我将其添加到原始问题中。谢谢。
-
为什么需要函数名或路由名?为什么不使用
request.url?