Я использую MicroElements.Swashbuckle.FluentValidation для вывода правил FluentValidation для документа Swagger.
Правила FluentValidation не выводятся для Swagger для атрибута [FromRoute].
В моем примере ниже , Я бы ожидал, что Swagger выведет ограничения Model, Pattern и MaxLength для модели.
Но он выводит только *, указывающий Обязательный
Post и Put (FromBody) работает нормально для генерируемой Swagger FluentValidation. Однако Get и Delete не работают. Атрибут [FromRoute], похоже, игнорирует как атрибуты Attributes, так и правила FluentValidation независимо от того, являются ли аргументы контроллера примитивными типами (как этот):
[Route("v{version:apiVersion}/{code}")]
public async Task<IActionResult> Get([FromRoute] string code)
... или Class (как этот)
[Route("v{version:apiVersion}/{code}")]
public async Task<IActionResult> Get([FromRoute] Model model)
public class GetValidator : AbstractValidator<Model>
{
public GetValidator()
{
RuleFor(x => x.Code).StringRequiredValidation();
RuleFor(x => x.Code).StringAlphaNumericValidation();
RuleFor(x => x.Code).StringMaxLengthValidation(5);
}
}
public class Model
{
/// <summary>
/// Unique code
/// </summary>
public string Code { get; set; }
}