如何解决设置 API 模型属性的默认值属性而不是“字符串”
我有一个具有以下模型的 Web 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; }
}
编译代码时,swagger看起来是这样的:
我正在尝试将 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。