2016-02-23 22 views
9

Sto usando ASP.NET e Swagger che espone un tipo complesso che accetta un POST. Ha un numero di campi stringa con lunghezze diverse. Come posso rifletterlo nell'interfaccia utente di Swagger?Annotazioni dei dati in Swagger

risposta

12

È possibile annotare le proprietà con StringLengthAttribute da System.ComponentModel.DataAnnotations.

Per esempio:

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

diventerà:

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

E questo:

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

diventa:

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

Oltre allo StringLength, lo Swashbuckle supporta anche gli attributi Range e RegularExpression.

Aggiornamento

MaxLength non funziona. StringLength fa. Tuttavia, scoprire queste informazioni nell'interfaccia utente di Swagger è un po 'goffo. Bisogna passare alla Model del vostro oggetto e poi il mouse sopra la proprietà:

How to discover max length info

+0

Grazie. Stavo usando l'attributo MaxLength. Ma nessuno dei due mostra "maxLength": 10 parti nell'interfaccia utente di Swagger. – illug

+0

Sono d'accordo che è un po 'maldestro. Il bit al passaggio del mouse non funziona nemmeno quando hai più di una di queste annotazioni. Si impilano l'uno sull'altro e non si sa a quale campo si riferiscono. Grazie per un'ottima risposta però. – illug

+0

L'ultima versione stabile di 'Swashbuckle' incorpora una nuova versione di' Swagger UI' che corregge le scatole impilate. – venerik

Problemi correlati