Fluentvalidation规则未通过MicroElements库反映在Swagger中

ghhkc1vu  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(179)

我在我的数据传输对象上使用Fluentvalidation,并希望通过MicroElements库在Swagger中显示这些规则,但它们没有反映在Swagger UI中。我正在使用最新的(截至2021年11月8日)Swashbuckle,Fluentvalidation和MicroElements库。
我的MS DI启动注册:

public static class SwaggerExtensions
{
    public static void ConfigureSwaggerExtensions(this IServiceCollection services)
    {
        services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "FooProject", Version = "v1" });
                c.IncludeXmlComments(XmlCommentsFilePath);
            });
        services.AddFluentValidationRulesToSwagger(); <==== MicroElements lib call
    }
    static string XmlCommentsFilePath
    {
        get
        {
            var basePath = PlatformServices.Default.Application.ApplicationBasePath;
            var fileName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name + ".xml";
            return Path.Combine(basePath, fileName);
        }
    }

}

我的DTO:

public class FooDTO
    {
        public string Name { get; set; }
        public string Description { get; set; }
    }

我的验证器:

public class FooValidator : AbstractValidator<FooDTO>
    {
        public FooValidator()
        {
            RuleFor(x => x.Name)
                .NotEmpty();

            RuleFor(x => x.Description)
                .NotEmpty()
                .Must(some self-defined rule);
        }
    }

Swagger UI输出:

name    string
nullable: true
description string
nullable: true

我可以采取哪些步骤来进一步隔离问题?

cvxl0en2

cvxl0en21#

通过将MicroElements.Swashbuckle.FluentValidation的版本更改为6.0.0-beta.3来修复它。
参考:https://github.com/micro-elements/MicroElements.Swashbuckle.FluentValidation/issues/123

相关问题