gpt4 book ai didi

c# - 带有 Swagger 和 FluentValidation 的 Web API 2 文档

转载 作者:行者123 更新时间:2023-11-30 21:46:50 24 4
gpt4 key购买 nike

我们正在使用 web api 2 和流畅的验证开发 web api。一切正常。

但是,我们意识到我们在流畅验证中定义的规则并没有得到 Swagger (Swashbuckle) 的尊重。

例如

Class Customer {
public string Name {get;set;}
}

如果我在流畅的验证器中将名称定义为必填字段,则该属性在 api 中被标记为可选。我知道我们可以通过使用 .net 注释属性来完成这项工作。但是我们不想分离验证逻辑(有些逻辑在.net注解中不好做。

如有任何评论,我们将不胜感激。

最佳答案

您可以通过将自定义 SchemaFilter 添加到您的 Swagger 配置中,将您的 Fluent Validation 规则包含到 Swagger 文档中。

将以下代码添加到 SwaggerConfig.cs 文件中:

c.SchemaFilter<FluentValidationRules>();

并使用下面的代码继承ISchemaFilter:

public class FluentValidationRules : ISchemaFilter
{
public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type)
{
var validator = new Customer(); //Your fluent validator class

schema.required = new List<string>();

var validatorDescriptor = validator.CreateDescriptor();

foreach (var key in schema.properties.Keys)
{
foreach (var validatorType in validatorDescriptor.GetValidatorsForMember(key))
{
if (validatorType is NotEmptyValidator)
{
schema.required.Add(key);
}
}
}
}
}

关于c# - 带有 Swagger 和 FluentValidation 的 Web API 2 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com