问题:定义“可选枚举”的查询参数类型时,Swagger UI 不再显示下拉项。
Swagger(打字稿)代码生成器也无法处理 null 类型。如果使用可为空类型,我检查的大多数代码生成器都会切换到
any
类型。
另一方面,pydantic 2 需要设置一个可选类型,而 pydantic 1 中则不然。
最近的 fastapi 版本也从 openapi 3.0.4 切换到 openapi 3.1.0,但支持它的库很少。特别是 null 类型似乎不被其中任何一个支持。
type: CategoryType | Query()
type: CategoryType | None = Query(default=None)
问题:有没有办法解决这个问题? Hacky 解决方案也受到欢迎。感谢您的任何建议。
我已经尝试过:
版本信息:FastAPI 版本:0.103.0,Pydantic 版本:2.4.2,Openapi 版本:3.1.0
为了有效地从 JSON 模式中消除 null 类型,引入了
SkipJsonSchema
功能。此增强功能(在 Fastapi 拉取请求 6653 中进行了解释)可确保 SDK 生成器避免使用 any
。
from pydantic.json_schema import SkipJsonSchema
my_field: str | SkipJsonSchema[None]
需要注意的是,Swagger Codegen 和 OpenAPI Generator 等工具尚未更新以完全兼容 OpenAPI 3.1+。