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

如何限制Swagger API仅接受True/False枚举值,拒绝Null?

解决方法

要让Swagger文档只允许true和false选项、禁止null,可以按以下两种场景调整:

1. 强制用户必须传入参数(无默认值)

如果要求用户必须主动选择true或false,不能依赖默认值,直接把Query的默认值改成...(表示必填):

value: BooleanEnum = Query(..., alias="value")

class BooleanEnum(str, Enum):
    true = "true"
    false = "false"
    @classmethod
    def _missing_(cls, value):
        return cls.__members__.get(value.lower(), None)

修改后Swagger会将该参数标记为必填,仅展示true和false两个选项,不会出现null。

2. 保留默认值但禁止传入null

如果想保留默认值false,但不允许用户传入null,给Query添加nullable=False参数即可:

value: BooleanEnum = Query(False, alias="value", nullable=False)

class BooleanEnum(str, Enum):
    true = "true"
    false = "false"
    @classmethod
    def _missing_(cls, value):
        return cls.__members__.get(value.lower(), None)

此时用户可以选择不传参数(自动使用默认的false),但如果传参就只能选true或false;Swagger文档不再显示null选项,且用户传入null时会触发验证错误。

补充说明

你的BooleanEnum的_missing_方法已经处理了大小写兼容问题(比如自动将True转为枚举值),遇到null时会返回None,配合nullable=False就能直接拦截无效的null请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:52:09