首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Swagger和FluentValidation的Web API2文档

使用Swagger和FluentValidation的Web API2文档
EN

Stack Overflow用户
提问于 2016-08-16 12:25:38
回答 2查看 2.5K关注 0票数 2

我们正在使用web api 2和fluent validation开发web api。一切都很正常。

然而,我们意识到我们在fluent validation中定义的规则并没有得到swagger (Swashbuckle)的尊重。

例如

代码语言:javascript
运行
复制
Class Customer {
    public string Name {get;set;}
}

如果我在fluent验证器中将name定义为必填字段,则该属性在api中被标记为可选。我知道我们可以通过使用.net注解属性来实现这一点。但是我们不想分离验证逻辑(有些逻辑在.net注解中很难做到。

任何对此的评论都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2017-04-01 15:21:45

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

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

代码语言:javascript
运行
复制
c.SchemaFilter<FluentValidationRules>();

并使用以下代码继承ISchemaFilter

代码语言:javascript
运行
复制
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);
                }
            }
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2016-08-16 17:43:16

看看Github上的information from SwashBluckle,你似乎不能对它使用流畅的验证。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38966634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档