我在我的数据传输对象上使用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
我可以采取哪些步骤来进一步隔离问题?
1条答案
按热度按时间cvxl0en21#
通过将
MicroElements.Swashbuckle.FluentValidation
的版本更改为6.0.0-beta.3
来修复它。参考:https://github.com/micro-elements/MicroElements.Swashbuckle.FluentValidation/issues/123