Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swagger API which is having query string

Tags:

I want to deploy an API which is having query string.This is the API

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

Here is how i am implementing

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

The country is optional parameter in this. I want the URL should display country only when if user enter some value, else it should not be displayed in the URL.

like image 940
schneider Avatar asked May 15 '15 04:05

schneider


People also ask

What is query string API?

A query string is a part of a uniform resource locator (URL) that assigns values to specified parameters.

What is query parameter in REST API?

You can use query parameters to control what data is returned in endpoint responses. The sections below describe query parameters that you can use to control the set of items and properties in responses, and the order of the items returned.

Can we pass query param in post request?

POST should not have query param. You can implement the service to honor the query param, but this is against REST spec.


2 Answers

You can't describe query parameters as part of the path in Swagger. You have to declare those explicitly as query parameters.

"/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"                }             }          }       } 
like image 98
Ron Avatar answered Oct 03 '22 02:10

Ron


Your IN parameter needs to be "query" not "path"

This should work:

"parameters": [   {       "name":"country",     "in":"query",     "description":"The Country that needs to be fetched. Example=France, India etc.",     "required":false,     "type":"string"   } ] 
like image 24
Mohammedshafeek C S Avatar answered Oct 03 '22 03:10

Mohammedshafeek C S