From c8b0b189fb0ffd09d5111e255f33544da6895379 Mon Sep 17 00:00:00 2001 From: Nong AnuchitO Date: Thu, 21 Mar 2024 14:44:53 +0700 Subject: [PATCH] add swagger doc --- kbazaar/makefile | 3 ++ .../kbazaar/health/HealthController.java | 10 +++++ .../kbazaar/product/ProductController.java | 20 ++++++++- .../kbazaar/shopper/ShopperController.java | 45 +++++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) diff --git a/kbazaar/makefile b/kbazaar/makefile index d4835b4..bad98e2 100644 --- a/kbazaar/makefile +++ b/kbazaar/makefile @@ -22,6 +22,9 @@ sonar: health: curl -X GET http://localhost:8080/api/v1/health +swagger: + open http://localhost:8080/swagger-ui/index.html + docker-build: docker build -t kbazaar . diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/health/HealthController.java b/kbazaar/src/main/java/com/kampus/kbazaar/health/HealthController.java index b826a99..3a6856f 100644 --- a/kbazaar/src/main/java/com/kampus/kbazaar/health/HealthController.java +++ b/kbazaar/src/main/java/com/kampus/kbazaar/health/HealthController.java @@ -1,5 +1,8 @@ package com.kampus.kbazaar.health; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -8,6 +11,13 @@ @RequestMapping("/api/v1") public class HealthController { + @ApiResponse( + description = "Health check", + responseCode = "200", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = String.class))) @GetMapping("/health") public String health() { return "{ \"status\": \"alive\" }"; diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/product/ProductController.java b/kbazaar/src/main/java/com/kampus/kbazaar/product/ProductController.java index 230bd13..5e93b98 100644 --- a/kbazaar/src/main/java/com/kampus/kbazaar/product/ProductController.java +++ b/kbazaar/src/main/java/com/kampus/kbazaar/product/ProductController.java @@ -1,5 +1,6 @@ package com.kampus.kbazaar.product; +import com.kampus.kbazaar.exceptions.NotFoundException; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; @@ -41,13 +42,30 @@ public ProductController(ProductService productService) { content = @Content( mediaType = "application/json", - schema = @Schema(implementation = Error.class))) + schema = @Schema(implementation = NotFoundException.class))) }) @GetMapping("/products") public List getProducts() { return productService.getAll(); } + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "get product by sku", + content = { + @Content( + mediaType = "application/json", + schema = @Schema(implementation = ProductResponse.class)) + }), + @ApiResponse( + responseCode = "404", + description = "product not found", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = NotFoundException.class))) + }) @GetMapping("/products/{sku}") public ProductResponse getProductById(@PathVariable String sku) { return productService.getBySku(sku); diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/shopper/ShopperController.java b/kbazaar/src/main/java/com/kampus/kbazaar/shopper/ShopperController.java index b39ee66..c2bb317 100644 --- a/kbazaar/src/main/java/com/kampus/kbazaar/shopper/ShopperController.java +++ b/kbazaar/src/main/java/com/kampus/kbazaar/shopper/ShopperController.java @@ -1,5 +1,11 @@ package com.kampus.kbazaar.shopper; +import com.kampus.kbazaar.exceptions.NotFoundException; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -16,11 +22,50 @@ public ShopperController(ShopperService shopperService) { this.shopperService = shopperService; } + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "list all shoppers", + content = { + @Content( + mediaType = "application/json", + array = + @ArraySchema( + schema = + @Schema( + implementation = + ShopperResponse.class))) + }), + @ApiResponse( + responseCode = "500", + description = "internal server error", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = NotFoundException.class))) + }) @GetMapping("/shopper") public List getAllUsers() { return shopperService.getAll(); } + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "get shopper by id", + content = { + @Content( + mediaType = "application/json", + schema = @Schema(implementation = ShopperResponse.class)) + }), + @ApiResponse( + responseCode = "500", + description = "internal server error", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = NotFoundException.class))) + }) @GetMapping("/shopper/{id}") public ShopperResponse getUserById(@PathVariable String id) { return shopperService.getById(id);