我正在尝试在Swashbuckle中显示默认值。有没有一种方法可以在.NET Core API的查询列表参数中定义默认值。 像这样:
[HttpGet("test")]
public ActionResult<string> TestFunc([FromQuery, BindRequired] List<string> testList = ["value1", "value2"]) {
//Do some stuff
return Ok(results);
}
答案 0 :(得分:2)
据我所知,我们无法将默认参数值设置为编译时常量,这意味着我们无法为字符串列表或字符串数组设置默认值。
这意味着无法在网络api参数中设置默认值。
如果要在招摇内显示默认值。您可以创建一个从IOperationFilter继承的类。
然后您可以检查参数名称,如果名称等于testList,则可以设置自定义描述。
更多详细信息,您可以参考以下代码示例:
自定义类别:
public class ParameterClass : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
{
return;
}
foreach (var parameter in operation.Parameters) {
if (parameter.Name == "testList")
{
parameter.Description = @"Default value: ['value1', 'value2']";
}
}
}
}
使用过滤器注册swaggergen:
services.AddSwaggerGen(c =>
{
c.OperationFilter<ParameterClass>();
});
结果:
更新:
如果要设置查询字符串之类的参数,则可以如下修改apply方法:
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
{
return;
}
foreach (var parameter in operation.Parameters) {
if (parameter.Name == "testList")
{
parameter.In = 0;
parameter.Description = @"['value1', 'value2']";
parameter.Schema = new OpenApiSchema() { Type = "string" ,Items = null };
}
}
}
结果: