2015-05-15 10 views
12

Voglio schierare un'API che sta avendo string.This query è l'APIAPI Swagger che sta avendo stringa di interrogazione

v1/products?q=circuit breaker&locale=en-GB&pageSize=8&pageNo=1&project=GLOBAL 

ecco come lo sono l'attuazione

"/v1/products?q={searchText}&locale={ctrCode}&pageSize={pageSize}&pageNo={pageNo}&project={project}&country={country}":{ 
     "get":{ 
      "tags":[ 
       "Search Text" 
      ], 
      "summary":"Get Products by searching text, countrycode, page number, pagesize, project and country(optional)", 
      "description":"Get Products by searching text, countrycode, page number, pagesize, project and country(optional)", 
      "operationId":"getProductName", 
      "produces":[ 
       "application/json", 
       "application/xml" 
      ], 
      "parameters":[ 
       { 
        "name":"searchText", 
        "in":"path", 
        "description":"The Product that needs to be fetched", 
        "required":true, 
        "type":"string" 
       }, 
       { 
        "name":"ctrCode", 
        "in":"path", 
        "description":"The Product locale needs to be fetched. Example=en-GB, fr-FR, etc.", 
        "required":true, 
        "type":"string" 
       }, 
       { 
        "name":"pageSize", 
        "in":"path", 
        "description":"The Product PageSize that needs to be fetched. Example=10, 20 etc.", 
        "required":true, 
        "type":"number" 
       }, 
       { 
        "name":"pageNo", 
        "in":"path", 
        "description":"The Product pageNo that needs to be fetched. Example=1,2 etc.", 
        "required":true, 
        "type":"number" 
       }, 
       { 
        "name":"project", 
        "in":"path", 
        "description":"The Project that needs to be fetched. Example=Mypact, DSL etc.", 
        "required":true, 
        "type":"string" 
       }, 
       { 
        "name":"country", 
        "in":"header", 
        "description":"The Country that needs to be fetched. Example=France, India etc.", 
        "required":false, 
        "type":"string" 
       } 
      ], 
      "responses":{ 
       "200":{ 
        "description":"successful operation", 
        "schema":{ 
        "$ref":"#/definitions/Products" 
        } 
       }, 
       "400":{ 
        "description":"Invalid Product_id supplied" 
       }, 
       "404":{ 
        "description":"Product not found" 
       } 
      } 
     } 
     } 

Il paese è opzionale parametro in questo. Voglio che l'URL visualizzi il Paese solo se l'utente inserisce un valore, altrimenti non dovrebbe essere visualizzato nell'URL.

+0

stesso problema ... spavalderia è stupido qui ... – gouchaoer

risposta

16

Non è possibile descrivere i parametri di query come parte del percorso in Swagger. Devi dichiararli esplicitamente come parametri di query.

"/v1/products":{ 
     "get":{ 
      "tags":[ 
       "Search Text" 
      ], 
      "summary":"Get Products by searching text, countrycode, page number, pagesize, project and country(optional)", 
      "description":"Get Products by searching text, countrycode, page number, pagesize, project and country(optional)", 
      "operationId":"getProductName", 
      "produces":[ 
       "application/json", 
       "application/xml" 
      ], 
      "parameters":[ 
       { 
        "name":"searchText", 
        "in":"query", 
        "description":"The Product that needs to be fetched", 
        "required":true, 
        "type":"string" 
       }, 
       { 
        "name":"ctrCode", 
        "in":"query", 
        "description":"The Product locale needs to be fetched. Example=en-GB, fr-FR, etc.", 
        "required":true, 
        "type":"string" 
       }, 
       { 
        "name":"pageSize", 
        "in":"query", 
        "description":"The Product PageSize that needs to be fetched. Example=10, 20 etc.", 
        "required":true, 
        "type":"number" 
       }, 
       { 
        "name":"pageNo", 
        "in":"query", 
        "description":"The Product pageNo that needs to be fetched. Example=1,2 etc.", 
        "required":true, 
        "type":"number" 
       }, 
       { 
        "name":"project", 
        "in":"query", 
        "description":"The Project that needs to be fetched. Example=Mypact, DSL etc.", 
        "required":true, 
        "type":"string" 
       }, 
       { 
        "name":"country", 
        "in":"query", 
        "description":"The Country that needs to be fetched. Example=France, India etc.", 
        "required":false, 
        "type":"string" 
       } 
      ], 
      "responses":{ 
       "200":{ 
        "description":"successful operation", 
        "schema":{ 
        "$ref":"#/definitions/Products" 
        } 
       }, 
       "400":{ 
        "description":"Invalid Product_id supplied" 
       }, 
       "404":{ 
        "description":"Product not found" 
       } 
      } 
     } 
     } 
+0

che non è il mio problema, il problema è se l'utente non fornisce nulla per paese (parametro) il paese = {paese} non deve essere visualizzato nell'URL – schneider

+1

Hai ragione, ho dimenticato una certa correzione. Modificato per riflettere questo. – Ron

3

tuo parametro IN deve essere "query" non "percorso"

questo dovrebbe funzionare:

{ 
    "name":"country", 
    "in":"query", 
    "description":"The Country that needs to be fetched. Example=France, India etc.", 
    "required":false, 
    "type":"string" 
}