From 24833b7e92ef4511f50d94a5e4f865f5b60d3002 Mon Sep 17 00:00:00 2001 From: "alex.peptan" Date: Mon, 13 Apr 2020 17:23:23 +0300 Subject: [PATCH 1/6] BAEL-3896: OpenAPI JSON Objects in Query Params --- spring-rest-http/README.md | 1 + .../jsonparam/JsonParamController.java | 55 +++++++++++++++++++ .../baeldung/jsonparam/ParamObjectDTO.java | 33 +++++++++++ 3 files changed, 89 insertions(+) create mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java create mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java diff --git a/spring-rest-http/README.md b/spring-rest-http/README.md index 35793cb281..cba017eb74 100644 --- a/spring-rest-http/README.md +++ b/spring-rest-http/README.md @@ -13,3 +13,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring RequestMapping](https://www.baeldung.com/spring-requestmapping) - [Guide to DeferredResult in Spring](https://www.baeldung.com/spring-deferred-result) - [Using JSON Patch in Spring REST APIs](https://www.baeldung.com/spring-rest-json-patch) +- [OpenAPI JSON Objects in Query Params](https://www.baeldung.com/openapi-json-objects-in-query-params) diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java b/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java new file mode 100644 index 0000000000..60797cf104 --- /dev/null +++ b/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java @@ -0,0 +1,55 @@ +package com.baeldung.jsonparam; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; + +@Controller +@RestController +@RequestMapping("/api") +public class JsonParamController { + + @GetMapping(value = "/something") + public String testQueryParamApi(@RequestParam("params") String params) { + // params={"type":"foo","color":"green"} + ParamObjectDTO paramObjectDTO; + ObjectMapper objectMapper = new ObjectMapper(); + try { + paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); + System.out.println(paramObjectDTO); + // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object + } catch (JsonParseException e) { + e.printStackTrace(); + } catch (JsonMappingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return params; + } + + + @PostMapping(value = "/something") + public String testBodyParamApi(@RequestBody String params) { + // params={"type":"foo","color":"green"} + ParamObjectDTO paramObjectDTO; + ObjectMapper objectMapper = new ObjectMapper(); + try { + paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); + System.out.println(paramObjectDTO); + // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object + } catch (JsonParseException e) { + e.printStackTrace(); + } catch (JsonMappingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return params; + } + +} diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java b/spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java new file mode 100644 index 0000000000..a738180fa6 --- /dev/null +++ b/spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java @@ -0,0 +1,33 @@ +package com.baeldung.jsonparam; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ParamObjectDTO { + private String type; + private String color; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + @Override + public String toString() { + return "ParamObjectDTO{" + + "type='" + type + '\'' + + ", color='" + color + '\'' + + '}'; + } +} From f0bdbde7a4634cee6e6575a785234674eb12ddf8 Mon Sep 17 00:00:00 2001 From: "alex.peptan" Date: Tue, 21 Apr 2020 19:05:42 +0300 Subject: [PATCH 2/6] BAEL-3896: OpenAPI JSON Objects in Query Params v2 --- .../jsonparam/JsonParamController.java | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java b/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java index 60797cf104..d2a09296c2 100644 --- a/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java +++ b/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java @@ -1,19 +1,20 @@ package com.baeldung.jsonparam; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; +import com.baeldung.controllers.DeferredResultController; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; -import java.io.IOException; - @Controller @RestController @RequestMapping("/api") public class JsonParamController { + private final static Logger LOG = LoggerFactory.getLogger(DeferredResultController.class); - @GetMapping(value = "/something") + @GetMapping(value = "/tickets") public String testQueryParamApi(@RequestParam("params") String params) { // params={"type":"foo","color":"green"} ParamObjectDTO paramObjectDTO; @@ -22,18 +23,28 @@ public class JsonParamController { paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); System.out.println(paramObjectDTO); // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object - } catch (JsonParseException e) { - e.printStackTrace(); - } catch (JsonMappingException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); + } catch (JsonProcessingException e) { + LOG.info("Json Processing Exception"); } return params; } + @GetMapping(value = "/tickets2") + public String testGetBodyParamApi(@RequestBody String params) { + // params={"type":"foo","color":"green"} + ParamObjectDTO paramObjectDTO; + ObjectMapper objectMapper = new ObjectMapper(); + try { + paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); + System.out.println(paramObjectDTO); + // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object + } catch (JsonProcessingException e) { + LOG.info("Json Processing Exception"); + } + return params; + } - @PostMapping(value = "/something") + @PostMapping(value = "/tickets") public String testBodyParamApi(@RequestBody String params) { // params={"type":"foo","color":"green"} ParamObjectDTO paramObjectDTO; @@ -42,12 +53,8 @@ public class JsonParamController { paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); System.out.println(paramObjectDTO); // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object - } catch (JsonParseException e) { - e.printStackTrace(); - } catch (JsonMappingException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); + } catch (JsonProcessingException e) { + LOG.info("Json Processing Exception"); } return params; } From 5b0097f698047fd89ed157439f9403f8cea73f13 Mon Sep 17 00:00:00 2001 From: "alex.peptan" Date: Mon, 18 May 2020 09:52:39 +0300 Subject: [PATCH 3/6] BAEL-3896: OpenAPI JSON Objects in Query Params - Swagger file --- .../jsonparam/JsonParamController.java | 62 ------- .../baeldung/jsonparam/ParamObjectDTO.java | 33 ---- .../jsonParamOpenApiSwaggerDefinition | 154 ++++++++++++++++++ 3 files changed, 154 insertions(+), 95 deletions(-) delete mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java delete mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java create mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java b/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java deleted file mode 100644 index d2a09296c2..0000000000 --- a/spring-rest-http/src/main/java/com/baeldung/jsonparam/JsonParamController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.baeldung.jsonparam; - -import com.baeldung.controllers.DeferredResultController; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -@Controller -@RestController -@RequestMapping("/api") -public class JsonParamController { - private final static Logger LOG = LoggerFactory.getLogger(DeferredResultController.class); - - @GetMapping(value = "/tickets") - public String testQueryParamApi(@RequestParam("params") String params) { - // params={"type":"foo","color":"green"} - ParamObjectDTO paramObjectDTO; - ObjectMapper objectMapper = new ObjectMapper(); - try { - paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); - System.out.println(paramObjectDTO); - // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object - } catch (JsonProcessingException e) { - LOG.info("Json Processing Exception"); - } - return params; - } - - @GetMapping(value = "/tickets2") - public String testGetBodyParamApi(@RequestBody String params) { - // params={"type":"foo","color":"green"} - ParamObjectDTO paramObjectDTO; - ObjectMapper objectMapper = new ObjectMapper(); - try { - paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); - System.out.println(paramObjectDTO); - // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object - } catch (JsonProcessingException e) { - LOG.info("Json Processing Exception"); - } - return params; - } - - @PostMapping(value = "/tickets") - public String testBodyParamApi(@RequestBody String params) { - // params={"type":"foo","color":"green"} - ParamObjectDTO paramObjectDTO; - ObjectMapper objectMapper = new ObjectMapper(); - try { - paramObjectDTO = objectMapper.readValue(params, ParamObjectDTO.class); - System.out.println(paramObjectDTO); - // use paramObjectDTO where you have {"type":"foo","color":"green"} JSON data as Object - } catch (JsonProcessingException e) { - LOG.info("Json Processing Exception"); - } - return params; - } - -} diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java b/spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java deleted file mode 100644 index a738180fa6..0000000000 --- a/spring-rest-http/src/main/java/com/baeldung/jsonparam/ParamObjectDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.jsonparam; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -@JsonIgnoreProperties(ignoreUnknown = true) -public class ParamObjectDTO { - private String type; - private String color; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - @Override - public String toString() { - return "ParamObjectDTO{" + - "type='" + type + '\'' + - ", color='" + color + '\'' + - '}'; - } -} diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition new file mode 100644 index 0000000000..9f9bcb788a --- /dev/null +++ b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition @@ -0,0 +1,154 @@ +swagger: '2.0' +... +paths: + /tickets: + get: + parameters: + - in: query + name: params + required: true + description: A JSON object with the `type` and `color` properties + type: string + example: '{"type":"foo","color":"green"}' + +swagger: '2.0' +... +paths: + /tickets: + post: + requestBody: + description: Parameter is an object that should be serialized as JSON + content: + application/json: + schema: + type: string + example: '{"type":"foo","color":"green"}' + responses: + '200': + description: successful process + +"/api/tickets": { + "get": { + "tags": [ + "account-resource" + ], + "summary": "testQueryParamApi", + "operationId": "testQueryParamApiUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "params", + "in": "query", + "description": "params", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "account-resource" + ], + "summary": "testBodyParamApi", + "operationId": "testBodyParamApiUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "params", + "description": "params", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false + } +}, +"/api/tickets2": { + "get": { + "tags": [ + "account-resource" + ], + "summary": "testGetBodyParamApi", + "operationId": "testGetBodyParamApiUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "params", + "description": "params", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false + } +} From 59afec1c00dcdabcdd3110d3815c0840a6bcc9a2 Mon Sep 17 00:00:00 2001 From: "alex.peptan" Date: Sat, 23 May 2020 20:06:43 +0300 Subject: [PATCH 4/6] BAEL-3896: OpenAPI JSON Objects in Query Params - README file revert + required changes --- spring-rest-http/README.md | 1 - .../jsonParamOpenApiSwagger3Definition | 32 ++ .../jsonParamOpenApiSwaggerDefinition | 276 ++++++++++-------- 3 files changed, 179 insertions(+), 130 deletions(-) create mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition diff --git a/spring-rest-http/README.md b/spring-rest-http/README.md index cba017eb74..35793cb281 100644 --- a/spring-rest-http/README.md +++ b/spring-rest-http/README.md @@ -13,4 +13,3 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring RequestMapping](https://www.baeldung.com/spring-requestmapping) - [Guide to DeferredResult in Spring](https://www.baeldung.com/spring-deferred-result) - [Using JSON Patch in Spring REST APIs](https://www.baeldung.com/spring-rest-json-patch) -- [OpenAPI JSON Objects in Query Params](https://www.baeldung.com/openapi-json-objects-in-query-params) diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition new file mode 100644 index 0000000000..218e24b12b --- /dev/null +++ b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition @@ -0,0 +1,32 @@ +swagger: '3.0' +info: + title: Sample API to send JSON objects as query parameters using OpenAPI 3 + description: API description. + version: 1.0.0 + +paths: + /tickets: + get: + parameters: + - in: query + name: params + required: true + # Parameter is an object that should be serialized as JSON + content: + application/json: + schema: + type: object + properties: + type: + type: string + name: + color: string + responses: + '200': + description: successful process + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition index 9f9bcb788a..3261736e15 100644 --- a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition +++ b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition @@ -1,5 +1,9 @@ swagger: '2.0' -... +info: + title: Sample API to send JSON objects as query parameters using OpenAPI 2 + description: API description. + version: 1.0.0 + paths: /tickets: get: @@ -10,10 +14,16 @@ paths: description: A JSON object with the `type` and `color` properties type: string example: '{"type":"foo","color":"green"}' + responses: + '200': + description: successful process + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found -swagger: '2.0' -... -paths: /tickets: post: requestBody: @@ -26,129 +36,137 @@ paths: responses: '200': description: successful process + '201': + description: Created + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found -"/api/tickets": { - "get": { - "tags": [ - "account-resource" - ], - "summary": "testQueryParamApi", - "operationId": "testQueryParamApiUsingGET", - "produces": [ - "*/*" - ], - "parameters": [ - { - "name": "params", - "in": "query", - "description": "params", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not Found" - } - }, - "deprecated": false - }, - "post": { - "tags": [ - "account-resource" - ], - "summary": "testBodyParamApi", - "operationId": "testBodyParamApiUsingPOST", - "consumes": [ - "application/json" - ], - "produces": [ - "*/*" - ], - "parameters": [ - { - "in": "body", - "name": "params", - "description": "params", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "string" - } - }, - "201": { - "description": "Created" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not Found" - } - }, - "deprecated": false - } -}, -"/api/tickets2": { - "get": { - "tags": [ - "account-resource" - ], - "summary": "testGetBodyParamApi", - "operationId": "testGetBodyParamApiUsingGET", - "produces": [ - "*/*" - ], - "parameters": [ - { - "in": "body", - "name": "params", - "description": "params", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not Found" - } - }, - "deprecated": false - } -} + /api/tickets: { + get: { + tags: [ + "account-resource" + ], + summary: "testQueryParamApi", + operationId: "testQueryParamApiUsingGET", + produces: [ + "*/*" + ], + parameters: [ + { + name: "params", + in: "query", + description: "params", + required: true, + type: "string" + } + ], + responses: { + 200: { + description: "OK", + schema: { + type: "string" + } + }, + 401: { + description: "Unauthorized" + }, + 403: { + description: "Forbidden" + }, + 404: { + description: "Not Found" + } + }, + deprecated: false + }, + post: { + tags: [ + "account-resource" + ], + summary: "testBodyParamApi", + operationId: "testBodyParamApiUsingPOST", + consumes: [ + "application/json" + ], + produces: [ + "*/*" + ], + parameters: [ + { + in: "body", + name: "params", + description: "params", + required: true, + schema: { + type: "string" + } + } + ], + responses: { + 200: { + description: "OK", + schema: { + type: "string" + } + }, + 201: { + description: "Created" + }, + 401: { + description: "Unauthorized" + }, + 403: { + description: "Forbidden" + }, + 404: { + description: "Not Found" + } + }, + deprecated: false + } + }, + /api/tickets2: { + get: { + tags: [ + "account-resource" + ], + summary: "testGetBodyParamApi", + operationId: "testGetBodyParamApiUsingGET", + produces: [ + "*/*" + ], + parameters: [ + { + in: "body", + name: "params", + description: "params", + required: true, + schema: { + type: "string" + } + } + ], + responses: { + 200: { + description: "OK", + schema: { + type: "string" + } + }, + 401: { + description: "Unauthorized" + }, + 403: { + description: "Forbidden" + }, + 404: { + description: "Not Found" + } + }, + deprecated: false + } + } From 18d00eae62ea63c5d489f9dcb8eb96f196f424d2 Mon Sep 17 00:00:00 2001 From: "alex.peptan" Date: Wed, 27 May 2020 11:57:14 +0300 Subject: [PATCH 5/6] BAEL-3896: OpenAPI JSON Objects in Query Params - swagger definitions moved in resources --- .../jsonParamOpenApiSwagger3Definition | 32 ---- .../jsonParamOpenApiSwaggerDefinition | 172 ------------------ .../openapi-2.json | 75 ++++++++ .../openapi-3.json | 37 ++++ 4 files changed, 112 insertions(+), 204 deletions(-) delete mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition delete mode 100644 spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition create mode 100644 spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.json create mode 100644 spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.json diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition deleted file mode 100644 index 218e24b12b..0000000000 --- a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwagger3Definition +++ /dev/null @@ -1,32 +0,0 @@ -swagger: '3.0' -info: - title: Sample API to send JSON objects as query parameters using OpenAPI 3 - description: API description. - version: 1.0.0 - -paths: - /tickets: - get: - parameters: - - in: query - name: params - required: true - # Parameter is an object that should be serialized as JSON - content: - application/json: - schema: - type: object - properties: - type: - type: string - name: - color: string - responses: - '200': - description: successful process - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found diff --git a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition b/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition deleted file mode 100644 index 3261736e15..0000000000 --- a/spring-rest-http/src/main/java/com/baeldung/jsonparam/jsonParamOpenApiSwaggerDefinition +++ /dev/null @@ -1,172 +0,0 @@ -swagger: '2.0' -info: - title: Sample API to send JSON objects as query parameters using OpenAPI 2 - description: API description. - version: 1.0.0 - -paths: - /tickets: - get: - parameters: - - in: query - name: params - required: true - description: A JSON object with the `type` and `color` properties - type: string - example: '{"type":"foo","color":"green"}' - responses: - '200': - description: successful process - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found - - /tickets: - post: - requestBody: - description: Parameter is an object that should be serialized as JSON - content: - application/json: - schema: - type: string - example: '{"type":"foo","color":"green"}' - responses: - '200': - description: successful process - '201': - description: Created - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found - - /api/tickets: { - get: { - tags: [ - "account-resource" - ], - summary: "testQueryParamApi", - operationId: "testQueryParamApiUsingGET", - produces: [ - "*/*" - ], - parameters: [ - { - name: "params", - in: "query", - description: "params", - required: true, - type: "string" - } - ], - responses: { - 200: { - description: "OK", - schema: { - type: "string" - } - }, - 401: { - description: "Unauthorized" - }, - 403: { - description: "Forbidden" - }, - 404: { - description: "Not Found" - } - }, - deprecated: false - }, - post: { - tags: [ - "account-resource" - ], - summary: "testBodyParamApi", - operationId: "testBodyParamApiUsingPOST", - consumes: [ - "application/json" - ], - produces: [ - "*/*" - ], - parameters: [ - { - in: "body", - name: "params", - description: "params", - required: true, - schema: { - type: "string" - } - } - ], - responses: { - 200: { - description: "OK", - schema: { - type: "string" - } - }, - 201: { - description: "Created" - }, - 401: { - description: "Unauthorized" - }, - 403: { - description: "Forbidden" - }, - 404: { - description: "Not Found" - } - }, - deprecated: false - } - }, - /api/tickets2: { - get: { - tags: [ - "account-resource" - ], - summary: "testGetBodyParamApi", - operationId: "testGetBodyParamApiUsingGET", - produces: [ - "*/*" - ], - parameters: [ - { - in: "body", - name: "params", - description: "params", - required: true, - schema: { - type: "string" - } - } - ], - responses: { - 200: { - description: "OK", - schema: { - type: "string" - } - }, - 401: { - description: "Unauthorized" - }, - 403: { - description: "Forbidden" - }, - 404: { - description: "Not Found" - } - }, - deprecated: false - } - } diff --git a/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.json b/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.json new file mode 100644 index 0000000000..53272c9cdb --- /dev/null +++ b/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.json @@ -0,0 +1,75 @@ +swagger: "2.0" +info: + description: "This is a sample server." + version: "1.0.0" + title: "Sample API to send JSON objects as query parameters using OpenAPI 2" +tags: +- name: "tickets" + description: "Send Tickets as JSON Objects" +schemes: +- "https" +- "http" +paths: + /tickets: + get: + tags: + - "tickets" + summary: "Send an JSON Object as a query param" + parameters: + - name: "params" + in: "path" + description: "{\"type\":\"foo\",\"color\":\"green\"}" + required: true + type: "string" + responses: + "200": + description: "Successful operation" + "401": + description: "Unauthorized" + "403": + description: "Forbidden" + "404": + description: "Not found" + post: + tags: + - "tickets" + summary: "Send an JSON Object in body" + parameters: + - name: "params" + in: "body" + description: "Parameter is an JSON object with the `type` and `color` properties that should be serialized as JSON {\"type\":\"foo\",\"color\":\"green\"}" + required: true + schema: + type: string + responses: + "200": + description: "Successful operation" + "401": + description: "Unauthorized" + "403": + description: "Forbidden" + "404": + description: "Not found" + "405": + description: "Invalid input" + /tickets2: + get: + tags: + - "tickets" + summary: "Send an JSON Object in body of get reqest" + parameters: + - name: "params" + in: "body" + description: "Parameter is an JSON object with the `type` and `color` properties that should be serialized as JSON {\"type\":\"foo\",\"color\":\"green\"}" + required: true + schema: + type: string + responses: + "200": + description: "Successful operation" + "401": + description: "Unauthorized" + "403": + description: "Forbidden" + "404": + description: "Not found" diff --git a/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.json b/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.json new file mode 100644 index 0000000000..a0ed147b9d --- /dev/null +++ b/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.json @@ -0,0 +1,37 @@ +openapi: 3.0.1 +info: + title: Sample API to send JSON objects as query parameters using OpenAPI 3 + description: This is a sample server. + version: 1.0.0 +servers: +- url: /api +tags: +- name: tickets + description: Send Tickets as JSON Objects +paths: + /tickets: + get: + tags: + - tickets + summary: Send an JSON Object as a query param + parameters: + - name: params + in: query + description: '{"type":"foo","color":"green"}' + required: true + schema: + type: object + properties: + type: + type: "string" + color: + type: "string" + responses: + 200: + description: Successful operation + 401: + description: Unauthorized + 403: + description: Forbidden + 404: + description: Not found From 5e0be5450473949a78b2d4b110f30d44124698aa Mon Sep 17 00:00:00 2001 From: "alex.peptan" Date: Sun, 31 May 2020 21:55:46 +0300 Subject: [PATCH 6/6] BAEL-3896: OpenAPI JSON Objects in Query Params - swagger definitions files changed to yaml --- .../{openapi-2.json => openapi-2.yaml} | 0 .../{openapi-3.json => openapi-3.yaml} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename spring-rest-http/src/main/resources/openapi-queryparam-definitions/{openapi-2.json => openapi-2.yaml} (100%) rename spring-rest-http/src/main/resources/openapi-queryparam-definitions/{openapi-3.json => openapi-3.yaml} (100%) diff --git a/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.json b/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.yaml similarity index 100% rename from spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.json rename to spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-2.yaml diff --git a/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.json b/spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.yaml similarity index 100% rename from spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.json rename to spring-rest-http/src/main/resources/openapi-queryparam-definitions/openapi-3.yaml