2014-12-22 4 views
39

Qualcuno è riuscito a definire i possibili valori di "enum" nella scheda Modello nella versione 2.0 di swaggger? Esempio: http://petstore.swagger.wordnik.com/#!/pet/addPet ha un'opzione enum per la proprietà 'status' ma quell'esempio usa la versione 1.0 di swagger (in base alla versione swagger definita nell'oggetto JSON). Ho cercato di ottenere lo stesso risultato nella versione 2.0 ma senza fortuna, non sono sicuro che la documentazione sia corretta per questo.Come definire enum in swagger.io?

Qualche suggerimento su questo?

risposta

57

"enum" funziona proprio come questo:

 { 
     "in": "query", 
     "name": "sample", 
     "description": "a sample parameter with an enum value", 
     "type": "string", 
     "enum": [ "1", "2"], 
     "required": true 
     } 

Come potete vedere, c'è un parametro di query chiamato sample di tipo stringa, e ha un enum affermando due valori possibili. In questo caso, l'esempio indica che il parametro è obbligatorio, pertanto l'interfaccia utente non mostrerà un valore vuoto come opzione.

Per un esempio funzionante di dimensioni minimali, provate questo:

{ 
    "swagger": "2.0", 
    "info": { 
    "title": "title", 
    "description": "descriptor", 
    "version": "0.1" 
    }, 
    "paths": { 
    "/sample": { 
     "post": { 
     "description": "sample", 
     "parameters": [ 
      { 
      "in": "query", 
      "name": "sample", 
      "description": "a sample parameter with an enum value", 
      "type": "string", 
      "enum": [ 
       "1", 
       "2" 
      ], 
      "required": true 
      } 
     ], 
     "responses": { 
      "200": { 
      "description": "Successful request." 
      } 
     } 
     } 
    } 
    } 
} 

verificarlo a livello locale, è possibile dichiarare una variabile (ad esempio spec) in Javascript, e passarlo nell'oggetto SwaggerUi.

var spec = { ... }; 

    window.swaggerUi = new SwaggerUi({ 
    url: url, 
    spec: spec, 
    dom_id: "swagger-ui-container", 
    supportedSubmitMethods: ['get', 'post', 'put', 'delete'], 
    onComplete: function(swaggerApi, swaggerUi){ 
    ... 

Il parametro url saranno ignorate in questo caso.

Alla fine, l'output è simile al seguente:

enter image description here

ero in grado di farlo in questo modo va bene, ma come si può vedere in immagine allegata di seguito per ogni params ha creato discesa: enter image description here

Quello che voglio ottenere è bello tabs Modello/Modello Schema come su sull'immagine qui sotto con enumerazioni disponibili elencate per parametro. Questo è possibile nella versione più recente di Swagger:

enter image description here

+0

Hi webron. Grazie per il tuo suggerimento Ancora nessuna gioia con esso ... Non importa quello che provo, non riesco ancora ad ottenere quel buon risultato con tutte le possibili stringhe come in 'status' per addPet nell'esempio menzionato in questione. Dato che sto seguendo lo stesso schema JSON di questa demo json - http://petstore.swagger.wordnik.com/v2/swagger.json - potresti dirmi come dovrei modificare la definizione di status Pet per ottenere lo stesso risultato della demo online? – eloleon

+0

Quale versione dell'interfaccia utente utilizzare? Quando l'ho testato, ha funzionato bene. – Ron

+0

Sto usando la versione 2.0.47 e sto cercando di modificare json in questo esempio: https://github.com/swagger-api/swagger-ui/tree/master/dist. Se potessi modificare questo json: http://petstore.swagger.wordnik.com/v2/swagger.json e buttarlo da qualche parte online lo apprezzerei – eloleon

0

Questa non è la risposta esatta, ma potrebbe funzionare per voi fino a quando aggiungono questa funzionalità.

semplicemente dichiarare la proprietà in questo modo

"MyObject":{ 
    "properties":{ 
     "MyEnum":{ 
     "type":"Value1 or Value2 or Value3" 
     } 
    } 
} 

tuo ModelSchema mostrerà {}, ma il modello mostrerà MyEnum(Value1 or Value2 or Value3, optional)

12

L'aggiornamento di queste con la sintassi YAML:

in: query 
name: sample 
description: a sample parameter with an enum value 
type: string 
enum: 
    - 1 
    - 2 
required: true