.NET Core API中如何让Swagger识别DTO的默认值?
解决Swagger中DTO默认值显示不符的问题
Swagger不会自动识别DTO构造函数里的默认值,可通过以下方式调整,让Swagger显示正确的默认提示:
方法1:给属性加[DefaultValue]注解
在DTO的属性上添加System.ComponentModel.DefaultValueAttribute,明确指定默认值,Swagger会读取这个注解生成对应提示:
using System.ComponentModel; public class User { [DefaultValue(false)] public bool Status { get; set; } [DefaultValue("Male")] public string Gender { get; set; } public User() { Status = false; Gender = "Male"; } }
方法2:配置Swagger生成器识别构造函数默认值
如果使用Swashbuckle.AspNetCore,在Program.cs里修改Swagger配置,开启对构造函数默认值的支持:
builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" }); // 启用构造函数默认值识别 c.UseAllOfToExtendReferenceSchemas(); c.SupportNonNullableReferenceTypes(); c.EnableAnnotations(); });
方法3:用属性初始化器替代构造函数赋值
直接在属性声明时设置默认值,这种方式Swagger也能直接识别:
public class User { public bool Status { get; set; } = false; public string Gender { get; set; } = "Male"; }
选其中一种方式修改后,Swagger的请求示例里就会显示status=false、gender="Male"的正确默认值了。
内容的提问来源于stack exchange,提问作者user123456
相关产品推荐
相关产品推荐

