簡體   English   中英

帶有Swagger和FluentValidation的Web API 2文檔

[英]Web API 2 documentation with Swagger and FluentValidation

我們正在使用Web API 2和流暢的驗證功能來開發Web API。 一切正常。

但是,我們意識到我們在流利驗證中定義的規則並沒有得到大張旗鼓(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);
                }
            }
        }
    }
}

查看來自 Github上SwashBluckle的信息 ,似乎您不能對其使用Fluent Validation。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM