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

如何强制FastAPI仅从Path/Query/Body指定位置获取参数

FastAPI 强制参数仅从指定位置获取

在FastAPI里,要强制参数仅从路径、查询字符串或请求体的指定位置获取,核心是用框架提供的Path、Query、Body类显式声明参数来源,而非依赖自动推断逻辑。

针对你提到的场景:调用/items/1?item_id=2同时携带含item_id:3的请求体,要让item_id仅从路径提取,具体实现如下:

首先导入必要模块:

from fastapi import FastAPI, Path

app = FastAPI()

定义路由时,用Path(...)包裹item_id参数,明确指定它是路径参数:

@app.get("/items/{item_id}")
async def read_item(item_id: int = Path(...)):
    return {"item_id_from_path": item_id}

这样配置后,无论查询字符串里的item_id=2还是请求体里的item_id:3,都会被FastAPI忽略,只会提取URL路径中的1作为item_id的值。

同理,其他场景的强制声明方式:

  • 强制参数仅从查询字符串获取:page: int = Query(...)
  • 强制参数仅从请求体获取:name: str = Body(...)

这种显式声明的方式能彻底消除参数来源的歧义,完全满足指定参数获取位置的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:43:12