[英]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.