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

FastAPI中基于Pydantic Schema动态生成GET查询参数的实现问题

FastAPI 基于Pydantic模型定义GET查询参数解决方案

报错原因

你当前写法触发422错误的核心原因是两点:

  1. 接口参数inputs没有添加MySchema类型注解,FastAPI无法识别这是需要自动解析的Pydantic模型
  2. 直接将MySchema类传入Depends()时,FastAPI会默认按请求体模型解析,GET请求无请求体因此校验失败。

正确实现方式

FastAPI原生支持用Pydantic模型批量定义GET查询参数,无需引入第三方工具,只需调整写法即可:

from fastapi import FastAPI, Depends, APIRouter
from pydantic import BaseModel
# Python3.9及以下版本需额外导入Optional
# from typing import Optional

router = APIRouter()
app = FastAPI()

class MySchema(BaseModel):
    # Python3.9及以下版本写法:a: Optional[int] = None
    a: int | None = None
    # Python3.9及以下版本写法:b: Optional[str] = None
    b: str | None = None

@router.get("/findStuff")
def get_stuff(inputs: MySchema = Depends()):
    return inputs

app.include_router(router)

验证效果

发起请求GET /findStuff?a=123&b=test会正常返回结果:

{"a":123,"b":"test"}

该写法同时会自动在OpenAPI文档生成对应的查询参数说明,字段类型校验逻辑也会正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:45:05