是否可以在Swagger页面上显示参数的DataAnnotations,例如最大值和最小值?
我已经尝试将ShowExtensions和ShowCommonExtension设置为true或调用ShowExtensions(),但这不能解决问题。范围属性和/或Swagger页面上不显示字符串的MaxLength(20)。
启动(代码段)
app.UseSwaggerUI(
options =>
{
options.ConfigObject = new ConfigObject
{
ShowCommonExtensions = true,
ShowExtensions = true
};
options.ConfigObject.AdditionalItems.Add("showCommonExtensions", true);
options.ShowExtensions();
Framework / Packages
控制器(代码段)
[HttpGet]
public IEnumerable<string> GetMethod([Required] [Range(1, 10)] int value)
{
Swagger UI
我做了更多的挖掘...
他们确实检查了多个属性:
if (attribute is DefaultValueAttribute defaultValue && defaultValue.Value != null)
{
schema.Default = OpenApiAnyFactory.CreateFor(schema, defaultValue.Value);
}
else if (attribute is RegularExpressionAttribute regex)
{
schema.Pattern = regex.Pattern;
}
else if (attribute is RangeAttribute range)
{
schema.Maximum = decimal.TryParse(range.Maximum.ToString(), out decimal maximum)
? maximum
: schema.Maximum;
schema.Minimum = decimal.TryParse(range.Minimum.ToString(), out decimal minimum)
? minimum
: schema.Minimum;
}
但是我看到的唯一使用范围的UnitTest在模型上:
public class MetadataType
{
[Required]
public string StringWithRequired { get; set; }
[Required]
public int IntWithRequired { get; set; }
[Range(1, 12)]
public int IntWithRange { get; set; }
[RegularExpression("^[3-6]?\\d{12,15}$")]
public string StringWithRegularExpression { get; set; }
}
如果这是您真正关心的事情,请填写错误报告:https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/new