fastapi: 父子项目中有重名的接口函数

一,问题描述

fastapi框架,一个父项目下面两个子项目,admin,api,有两个接口的函数名重复,都叫get_password,
这种情况下,jinja模板中url_for函数怎样把它们两个区分开?

二,解决:

当然可以直接改函数名避免重复,但也可以在装饰器中直接指定name

如果你是用 APIRouter 将项目拆分为 adminapi,你可以在定义路由或者注册路由时,显式指定不同的 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>

 

posted @ 2026-07-21 21:11  刘宏缔的架构森林  阅读(0)  评论(0)    收藏  举报