2016-02-23 11 views
9

私は、POSTを受け入れる複雑な型を公開するASP.NETとSwaggerを使用しています。制限された長さが異なる複数の文字列フィールドがあります。それをSwaggerのUIに反映するにはどうすればよいですか?Swaggerのデータ注釈

答えて

12

StringLengthAttributeのプロパティには、System.ComponentModel.DataAnnotationsから注釈を付けることができます。例えば

[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でこの情報を発見するのはちょっと面倒です。

How to discover max length info

+0

感謝を:あなたは、あなたのオブジェクトのModelに移動し、財産上にカーソルを移動しなければなりません。私はMaxLength属性を使用していました。しかし、どちらも "Swagger UI"で "maxLength":10の部分を表示しません。 – illug

+0

私はそれが少し不器用であることに同意します。ホバービットは、これらのアノテーションが複数あるときには実際には機能しません。彼らはお互いの上に積み重なり、彼らはあなたがどのフィールドを参照しているか分からない。しかし、素晴らしい答えをありがとう。 – illug

+0

'Swashbuckle'の最新バージョン安定版には、スタックボックスを修正する' Swagger UI'の新バージョンが組み込まれています。 – venerik