【问题标题】:Data annotations in SwaggerSwagger 中的数据注释
【发布时间】:2016-06-05 11:10:45
【问题描述】:

我正在使用 ASP.NET 和 Swagger,它公开了一个接受 POST 的复杂类型。它有许多具有不同限制长度的字符串字段。如何在 Swagger UI 中体现这一点?

【问题讨论】:

    标签: asp.net-web-api2 swagger-2.0 swashbuckle


    【解决方案1】:

    您可以使用来自System.ComponentModel.DataAnnotationsStringLengthAttribute 注释属性。

    例如:

    [StringLength(10)]
    public String Name {get;set;}
    

    会变成:

    "name": {
        "minLength": 0,
        "maxLength": 10,
        "type": "string"
    }
    

    还有这个:

    [StringLength(10, MinimumLength = 5)]
    public String Name {get;set;}
    

    变成:

    "name": {
        "minLength": 5,
        "maxLength": 10,
        "type": "string"
    }
    

    除了StringLength Swashbuckle 还支持RangeRegularExpression 属性。

    更新

    MaxLength 不起作用。 StringLength 确实如此。但是,在 Swagger UI 中发现这些信息有点笨拙。您必须导航到对象的Model,然后将鼠标悬停在该属性上:

    【讨论】:

    • 谢谢。我正在使用 MaxLength 属性。但两者都不会在 Swagger UI 中显示 "maxLength": 10 部分。
    • 我同意这有点笨拙。当您有多个这些注释时,悬停位甚至都不起作用。它们将堆叠在一起,您不知道它们指的是哪个字段。不过,感谢您的出色回答。
    • Swashbuckle 的最新版本稳定版包含修复堆叠框的新版本Swagger UI
    • 查看 ReDoc,它比 Swagger UI 好很多,对我来说唯一缺少的是交互式 api 控制台。
    • MaxLength 至少现在适用于 ASP.NET 核心和 Swashbuckle。不幸的是,仍然需要悬停才能看到最大长度。
    猜你喜欢
    • 2020-04-04
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多