Отображение (значения) DataAnnotations - Swashbuckle - Swagger page - PullRequest
1 голос
/ 27 мая 2020

Можно ли отображать DataAnnotations параметров на странице Swagger, например минимальное и максимальное значения?

Я уже пробовал установить для ShowExtensions и ShowCommonExtension значение true или вызвать ShowExtensions (), но это не решает проблему. Атрибут Range и / или например MaxLength (20) строки не отображается на странице Swagger.

Startup (фрагмент кода)

    app.UseSwaggerUI(
        options =>
        {
            options.ConfigObject = new ConfigObject
            {
                ShowCommonExtensions = true,
                ShowExtensions = true
            };

            options.ConfigObject.AdditionalItems.Add("showCommonExtensions", true);

            options.ShowExtensions();

Фреймворки / пакеты

  • . NET Core 3.1
  • Swashbuckle.AspNetCore (5.4.1)
  • Swashbuckle.AspNetCore.SwaggerGen (5.4 .1)

Контроллер (фрагмент кода)

 [HttpGet]
 public IEnumerable<string> GetMethod([Required] [Range(1, 10)] int value)
 {

Swagger UI

Swagger UI

1 Ответ

1 голос
/ 01 июня 2020

Я еще немного покопался ...

У них есть проверки на несколько атрибутов:

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/316ddd0fe6768f470c274a0e93c789b65cf658b9/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/OpenApiSchemaExtensions.cs#L12

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, использующий диапазон, который я вижу, относится к модели:

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/47684caeeaaeb4d887236e61a2ea35e4dc76b958/test/Swashbuckle.AspNetCore.TestSupport/Fixtures/DataAnnotatedViaMetadataType.cs#L26

    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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...