【Swagger】中string类型参数必填的诡异问题
背景
ASP.NETCore3.0项目,使用Swagger接口文档。
之前的项目都是Swashbuckle.AspNetCore-5.0.0
新项目想尝尝鲜,用最新版Swashbuckle.AspNetCore-5.6.3
目前发现的新变更就是返回结果示例值的颜色,不同数据类型是不同颜色
环境
接口
一个Get请求的接口,使用FromQuery方式,定义的入参类去接收参数
入参类
string类型和long?
问题复现
Swagger请求
返回400的错误。在模型绑定时就已经被拦截,根本没有运行到接口的非空验证。
POSTMAN请求
返回400的错误。在模型绑定时就已经被拦截,根本没有运行到接口的非空验证。
原因
猜测
因为使用了最新的Swagger组件,愚以为是新版本的问题。
真的,为有这种想法感到羞愧。
实际问题
因为上面的猜测,随将一个旧项目的Swagger从5.0.0升级到5.6.3,
但是没有发生这样的问题,
所以还是我使用的问题。
因为是模型的问题,所以想会不会是项目属性的设置问题,
遂,对比老项目和问题项目的项目属性。
终于发现了问题所在:项目属性->生成->可以为null
git提交差异
最终结果
项目属性->生成->可以为null : 禁用
结语
回想一下,好像是在配置【取消显示警告】时候,鼠标滚动了把这个配置修改掉了。
淦,这都什么问题,折腾我半天。