You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Python FastAPI路由传递实例化相关参数?

FastAPI传递路由实例化参数的实现方式

FastAPI本身不支持直接通过include_router传递自定义params参数,但可以通过以下几种方案实现你的需求:

1. 依赖注入传递参数(推荐)

这是FastAPI的标准实践,将参数封装为依赖项,在路由处理函数中注入使用:

# server.py 中定义依赖
from fastapi import Depends

# 这里的db_params是你在server.py中管理的配置
def get_db_params():
    return db_params

路由文件中使用依赖:

from fastapi import APIRouter, Depends

user_data_router = APIRouter()

@user_data_router.get("/users")
async def get_users(db_params=Depends(get_db_params)):
    # 直接使用db_params进行数据库操作等逻辑
    return {"message": "获取用户列表成功"}

server.py中正常挂载路由即可:

app.include_router(user_data_router)

2. 路由工厂函数初始化参数

如果需要在路由创建阶段就传入参数,可以编写工厂函数生成路由实例:

# 路由文件中的工厂函数
def create_user_data_router(db_params):
    router = APIRouter()
    # 将参数绑定到路由实例的自定义属性
    router.db_params = db_params

    @router.get("/users")
    async def get_users():
        # 使用路由实例上的参数
        return {"db_params": router.db_params}
    
    return router

server.py中实例化路由并挂载:

# 传入db_params生成路由实例
user_data_router = create_user_data_router(db_params)
app.include_router(user_data_router)

3. 利用App State传递全局参数

如果参数是全局共享的,可以存入FastAPI应用的state属性,在路由中通过请求对象获取:

# server.py中设置全局状态
app.state.db_params = db_params

路由文件中获取参数:

from fastapi import APIRouter, Request

user_data_router = APIRouter()

@user_data_router.get("/users")
async def get_users(request: Request):
    # 从应用状态中取出参数
    db_params = request.app.state.db_params
    return {"message": "获取用户列表成功"}

内容的提问来源于stack exchange,提问作者Conic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:45:30