2015-04-29 20 views
5

Ho più parametri a cui voglio fare riferimento, ma non voglio specificarli uno per uno.È possibile definire un set di parametri e riferirlo?

Questo frammento non rende i parametri visualizzati:

{ 
    ... 
    "paths": { 
     "/stuff": { 
      "get": { 
       "description": "Gets stuff", 
       "operationId": "getStuff", 
       "parameters": { 
        "$ref": "#/definitions/set1" 
       } 
      } 
     } 
    }, 
    "parameters": { 
     "a": { 
      "name": "a", 
      "in": "query", 
      "description": "Param A", 
      "required": false, 
      "type": "string" 
     }, 
     "b": { 
      "name": "b", 
      "in": "query", 
      "description": "Param B", 
      "required": false, 
      "type": "string" 
     } 
    }, 
    "definitions": { 
     "set1": [ 
      { 
       "$ref": "#/parameters/a" 
      }, 
      { 
       "$ref": "#/parameters/b" 
      } 
     ], 
     "set2": ... 
    } 
} 

Questo è possibile o devo specificare ogni parametro come set1, per ogni richiesta?

+0

Possibile duplicato [Swagger/OpenAPI - uso $ ref per passare un parametro definito riutilizzabile] (https://stackoverflow.com/questions/27005105/swagger-openapi-use-ref-to-pass-a-reusable-defined-parameter) – robertwbradford

+0

@robertwbradford non la penso così, piuttosto la mia domanda sembra una risposta alla domanda di riferimento. Si tratta di fare riferimento a un set. – Archimedix

+0

Vedo ora. Tutti, come eri ... :) – robertwbradford

risposta

2

In effetti questa non è una definizione valida e come hai suggerito, dovresti specificare ogni parametro separatamente facendo riferimento a quello globale. Se i parametri sono condivisi per tutte le operazioni in un percorso specifico, è possibile definirli a livello di percorso e verrebbero applicati a tutte le operazioni.

Per una singola operazione, che ci definisce come:

"paths": { 
    "/stuff": { 
    "get": { 
     "description": "Gets stuff", 
     "operationId": "getStuff", 
     "parameters": [ 
     { 
      "$ref": "#/parameters/a" 
     }, 
     { 
      "$ref": "#/parameters/b" 
     } 
     ] 
    } 
    } 
} 
+3

Peccato che questo non sia supportato in quanto ho set di parametri diversi che dipendono dal verbo/metodo HTTP e dai percorsi per più entità che condividono questi metodi. Tuttavia, ho anche provato a definire una matrice 'parameters' sullo stesso livello di' get' nell'esempio, che dovrebbe funzionare secondo le specifiche di Swagger, ma in [swagger-ui] (https://github.com)/swagger-api/swagger-ui) i parametri non vengono visualizzati a meno che non li definisca sotto 'get'. Qualche idea del perché? – Archimedix

+0

Hm, sembra che [la correzione per questo] (https://github.com/swagger-api/swagger-ui/issues/617) sia correlata a [la correzione per i parametri di livello superiore] (https: // github .com/swagger-api/swagger-ui/issues/621) in ['develop-2.0' branch] (https://github.com/swagger-api/swagger-ui/commit/21d8a89316ffbb8e5156f1ba1bdcd91a2140dbcf), ma a quanto pare ha stato fuso in 'master' già che ho appena controllato ieri. Strano. – Archimedix

+0

Dovrebbe essere disponibile in master in pochi giorni, ma sì, per ora è possibile utilizzare il ramo develop_2.0. – Ron