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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:20:42