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

FastAPI int类型可空Form参数在Swagger UI的显示异常问题求助

FastAPI int类型可空Form参数在Swagger UI的显示异常问题求助

大家好,我最近在优化一个旧FastAPI接口时遇到了个头疼的问题,想过来请教下各位前辈。

我需要实现一个支持int类型可空的Form参数,接口本身功能是正常的,但Swagger UI的交互体验变得很差,具体情况是这样的:

我用了最新版的FastAPI,试了两种写法来定义可空的int类型Form参数:

第一种写法:

@app.post('/native')
async def native(age: Annotated[int | None, Form(description='age')] = None):
    return {'age': age}

第二种写法:

@app.post('/native')
async def native(age: int | None = Form(None, description='age')):
    return {'age': age}

不管用哪种写法,Swagger UI里这个age参数的默认值都会显示成0,要是我把这个0删掉,那个“发送空值”的复选框就会自动勾选,这时候提交请求就会触发服务端的验证错误。而我实际的接口有一大堆参数,这样的交互对使用接口的人来说太不友好了。

我还尝试过给Form参数加上examples=[''],这时候默认显示是空的,但那个“发送空值”的复选框还是会被勾选,这也不是我想要的效果。

这里必须用Form参数的原因是,这个接口是很久以前就定义好的,我只是想优化它的参数验证逻辑,不想废弃这个旧接口,也不想让所有客户端都被迫更新到新的API版本。

有没有什么办法能让Swagger UI里这个可空的int类型Form参数默认显示为空,同时那个“发送空值”的复选框也不会被自动勾选呢?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:42:57