2016-02-23 16 views
9

Ich benutze ASP.NET und Swagger, die einen komplexen Typ, der einen POST akzeptiert. Es verfügt über mehrere Zeichenfolgenfelder mit unterschiedlichen eingeschränkten Längen. Wie kann ich das in der Swagger UI widerspiegeln?Daten Annotationen in Swagger

Antwort

12

Sie können die Eigenschaften mit der StringLengthAttribute von System.ComponentModel.DataAnnotations annotieren.

Zum Beispiel:

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

wird geworden:

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

Und:

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

wird:

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

Neben StringLength unterstützt Swashbuckle auch die Attribute Range und RegularExpression.

aktualisieren

MaxLength funktioniert nicht. StringLength tut. Diese Informationen in der Swagger-Benutzeroberfläche zu finden, ist jedoch etwas ungeschickt. Sie müssen die Model Ihr Objekt navigieren und dann über das Objekt schweben:

How to discover max length info

+0

Dank. Ich habe das MaxLength-Attribut verwendet. Aber keine "maxLength": 10 Teile in der Swagger UI. – illug

+0

Ich stimme zu, es ist ein bisschen ungeschickt. Das Hover-Bit funktioniert nicht einmal, wenn Sie mehr als eine dieser Anmerkungen haben. Sie werden übereinander gestapelt und Sie wissen nicht, auf welches Feld sie sich beziehen. Danke für eine tolle Antwort. – illug

+0

Die neueste Version der stabilen Version von 'Swashbuckle' enthält eine neue Version von' Swagger UI', die die gestapelten Boxen behebt. – venerik