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

如何在FastAPI接口中同时使用必填和可选路径参数?

实现方案

FastAPI中要实现可选路径参数,有两种常用的可行方式:

方案1:注册双路由(全版本兼容,最稳妥)

给同一个视图函数绑定两个路由规则,分别对应带可选参数和不带可选参数的场景,代码修改如下:

# 先注册不带financialColumn的路由,对应默认参数场景
@app.get("/company/{company_ticker}/model", dependencies=[Depends(api_counter)])
# 再注册带financialColumn的路由,对应传参场景
@app.get("/company/{company_ticker}/model/{financialColumn}", dependencies=[Depends(api_counter)])
async def myendpoint(
    company_ticker: str,
    # 保留默认值配置即可
    financialColumn: Optional[str] = 'netincome',
    ...
):
    myFunction(company_ticker, financialColumn)

这种方式不需要依赖FastAPI的版本,匹配逻辑清晰,不会出现路径匹配冲突。

方案2:高版本FastAPI原生支持(v0.73.0及以上)

如果你的FastAPI版本足够新,可以直接在路径参数声明时配置默认值,无需额外注册路由:

@app.get("/company/{company_ticker}/model/{financialColumn}", dependencies=[Depends(api_counter)])
async def myendpoint(
    company_ticker: str,
    financialColumn: str = 'netincome',
    ...
):
    myFunction(company_ticker, financialColumn)

注意:使用该方案时必须保证可选路径参数放在整个路径的最后一位,否则会出现路径匹配混乱的问题。

两种方案都可以实现你要的效果:用户访问/company/xxx/model时,financialColumn自动取默认值netincome;访问/company/xxx/model/[自定义参数]时,取用户传入的自定义值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:06:05