fastapi: 父子项目中有重名的接口函数
一,问题描述
fastapi框架,一个父项目下面两个子项目,admin,api,有两个接口的函数名重复,都叫get_password,
这种情况下,jinja模板中url_for函数怎样把它们两个区分开?
二,解决:
当然可以直接改函数名避免重复,但也可以在装饰器中直接指定name
如果你是用 APIRouter 将项目拆分为 admin 和 api,你可以在定义路由或者注册路由时,显式指定不同的 name。
就是在路由装饰器中显式指定 name
这是最直接的方法,不受函数名重名的影响:
# admin 模块
@router.get("/admin/password", name="admin_get_password")
async def get_password():
return {"message": "admin password"}
# api 模块
@router.get("/api/password", name="api_get_password")
async def get_password():
return {"message": "api password"}
Jinja 模板中的写法: 直接使用你定义的唯一 name 即可:
HTML页面中的调用
<!-- 跳转到 admin 的接口 -->
<a href="{{ url_for('admin_get_password') }}">Admin Password</a>
<!-- 跳转到 api 的接口 -->
<a href="{{ url_for('api_get_password') }}">API Password</a>
浙公网安备 33010602011771号