web-dev-qa-db-ja.com

クエリ文字列を持っているSwagger API

クエリ文字列を持つAPIをデプロイしたい。これがAPI

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

ここに私が実装している方法があります

"/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"
               }
            }
         }
      }

国は、このオプションのパラメーターです。ユーザーが値を入力した場合にのみURLを国に表示し、それ以外の場合はURLに表示しないようにします。

18
schneider

Swaggerのパスの一部としてクエリパラメーターを記述することはできません。これらをクエリパラメータとして明示的に宣言する必要があります。

"/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"
               }
            }
         }
      }
23
Ron

INパラメータは、「パス」ではなく「クエリ」である必要があります

これは動作するはずです:

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