如何获取路由的原始路径或端点函数名称?快速API

问题描述 投票:0回答:1

使用 fastapi,我正在努力添加“login_required”(或 smh)中间件。

(我认为中间件是最好的主意,如果我的问题没有得到正常的解决方案,我将不得不使用装饰器,或者一些硬编码,比如在每个路由中放入 hassatr(request.state, "user") )

当然,我想为未经授权的人保留一些免费页面,

所以我的想法是检查请求的路径是否在 AUTH_PATHS 列表中。

这一直有效,直到我明白我总是有一些灵活的路径,例如

@router.get('/posts/all/{page:int}')

如果你知道如何在真正的产品项目上完成它,我会把它作为答案

我有4个想法:

  1. 搜索一些我不知道的神奇 python/fastapi 语法(还没有找到,但也许是)

  2. 使用一些python模块,比如fastapi内置的pydantic(它是为了验证而制作的,所以它不起作用)

  3. 做一些疯狂的事情,比如每当我的数据库变得更大并且需要更多页面来显示所有帖子时,它就会为 config.py 中的某个值加 1,并更新 config.py 中的设置类,包括那里的每个路径(例如' /posts/all/154', '/posts/all/155') 等(这纯粹是疯狂,我相信这会非常低效且缓慢)

  4. 检查请求调用了哪个端点(函数)。将此视为最好的主意(当我已经空了的时候),但后来我找不到任何信息,如果这是真的的话。

python authentication url fastapi middleware
1个回答
0
投票

因此,我所做的解决方案是,我制作了 2 个独立的路由器,其中一个正在应用依赖项来进行所需的身份验证。令牌 I 的验证毕竟留在中间件上,因此它使当前用户可以在两个路由器中访问。效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.