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.
A query string is a part of a uniform resource locator (URL) that assigns values to specified parameters.
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.
POST should not have query param. You can implement the service to honor the query param, but this is against REST spec.
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" } } } }
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" } ]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With