我有一个网络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" : ""
但是,它不会将默认值设置为空。
我认为您可以添加自定义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