Swashbuckle,Swagger模式和格式注释或XML注释

时间:2018-11-15 09:11:06

标签: json asp.net-web-api swagger-ui swagger-2.0 swashbuckle

我正在尝试在Swagger文档中添加format和/或pattern关键字。我正在使用Swashbuckle和currenlty我正在使用XML注释为我的不同字段插入描述。例如: 控制器:

/// <summary>
/// Shows a list with states
/// </summary>
/// <param name="id">The state ID</param>
/// <returns>Offers the state</returns>
[HttpGet("id", Name = "Get")]
public async Task<ActionResult<State>> GetState(string id)
{
State result = GetState(id);
return Ok(result);
}

我希望swagger文档使用正则表达式来显示pattern关键字:

'^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$'

是否可以在使用XML注释或注释时添加此文档。我想问同样的格式关键字。例如: '格式:日期时间'

使用带有Swashbuckle的XML注释或注释来自动生成Swagger文档,是否可能需要这些文件?

2 个答案:

答案 0 :(得分:1)

在项目上有一个示例如何将其用于模型: https://github.com/domaindrivendev/Swashbuckle/blob/5489aca0d2dd7946f5569341f621f581720d4634/Swashbuckle.Dummy.Core/Controllers/MetadataAnnotatedTypesController.cs#L21

public class PaymentMetadata
{
    [Required]
    public decimal Amount { get; set; }

    [Required, RegularExpression("^[3-6]?\\d{12,15}$")]
    public string CardNumber { get; set; }

    [Required, Range(1, 12)]
    public int ExpMonth { get; set; }

    [Required, Range(14, 99)]
    public int ExpYear { get; set; }

    [StringLength(500, MinimumLength = 10)]
    public string Note { get; set; }
}

对于像您这样的原始类型,我不确定是否完全支持它,您可以尝试使用以下类似方法:

public async Task<ActionResult<State>> GetState([RegularExpression("PATTERN")]string id)

如果这样不起作用,您可以使用IDocumentFilter

注入

答案 1 :(得分:0)

我只是尝试将正则表达式添加到我的一个使用招摇的项目中,并且效果很好

/// <param name="customerId">^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$</param>