Swagger 不处理 null 类型

问题描述 投票:0回答:1

问题:定义“可选枚举”的查询参数类型时,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 解决方案也受到欢迎。感谢您的任何建议。

我已经尝试过:

  • 尝试降级 openapi 版本而不降级 fastapi => 不可能
  • 尝试在不降级 fastapi 的情况下降级到 pydantic 1 => 由于依赖冲突而不可能。
  • 尝试使用不同的代码生成器并升级 swagger-ui => 还没有解决方案。
  • 还在这里开始了讨论:https://github.com/tiangolo/fastapi/discussions/10595.

版本信息:FastAPI 版本:0.103.0,Pydantic 版本:2.4.2,Openapi 版本:3.1.0

swagger fastapi swagger-ui openapi pydantic
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+。

© www.soinside.com 2019 - 2024. All rights reserved.