【问题标题】:From where we can set default values for swagger when you run当您运行时,我们可以从中设置 swagger 的默认值
【发布时间】:2021-09-01 06:40:10
【问题描述】:
我想知道如何在 swagger 中设置默认值,当您运行项目时,我认为它在类中设置如下:
/// <summary>
/// Your spread percentage
/// </summary>
/// <example>12</example>
public decimal ClassNumber { get; set; } = default!;
但它不起作用,应该有其他地方设置默认值
【问题讨论】:
标签:
.net
asp.net-core
swagger
【解决方案1】:
您可以添加自定义ISchemaFilter 来修改您的示例值:
注意:不确定您的Swagger 版本是什么,不同版本的swagger 会使Apply() 中的参数不同。我用Swashbuckle.AspNetCore v 5.6.3。
型号:
public class TestModel
{
public decimal ClassNumber { get; set; }
//other properties...
}
自定义架构过滤器:
public class CustomSchemaFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (context.Type == typeof(TestModel))
{
schema.Example = new OpenApiObject
{
["ClassNumber"] = new OpenApiString("2.6"),
//["ToDate"] = new OpenApiInteger(1)
//other property in your model
};
}
}
}
在 Startup.cs 中注册过滤器:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebapiProject5", Version = "v1" });
c.SchemaFilter<CustomSchemaFilter>();
});