提问者:小点点

设置API模型属性的默认值属性,而不是“字符串”


我有一个网络API与以下模型:

public class ParseLicenseRequest
{
    public const string emptyStringDefault = "";

    [Required(AllowEmptyStrings = false)]
    public string LicenseKey { get; set; }

    [DefaultValue(emptyStringDefault)]
    public string Sid { get; set; } = emptyStringDefault;

    public bool ShortFormat { get; set; }
}

编译代码时,它看起来像这样:

我正在尝试将sid的默认值设置为空:

"sid" : ""

但是,它不会将默认值设置为空。


共1个答案

匿名用户

我认为您可以添加自定义ISchemaFilter来修改您的示例值:

注意:不确定您的Swagger版本是什么,不同的swagger会使Apply()中的参数不同。

public class CustomSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.Type == typeof(ParseLicenseRequest))
        {
            schema.Example = new OpenApiObject
            {
                ["Sid"] = new OpenApiString("")
            };
        }

    }
}

在Startup. cs中注册过滤器:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebapiProject5", Version = "v1" });
    c.SchemaFilter<CustomSchemaFilter>();

});

参考:

https://github.com/domaindrivendev/Swashbuckle.AspNetCore#apply-schema-filters-to-specific-types