From efa9a84a31af8737568d7da1151064183e5d3f0b Mon Sep 17 00:00:00 2001 From: junseokkim Date: Sun, 8 Sep 2024 15:58:04 +0900 Subject: [PATCH 1/3] feat: add swagger dependence --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 3fa5f24..d194439 100644 --- a/build.gradle +++ b/build.gradle @@ -37,6 +37,8 @@ dependencies { //aws implementation 'com.amazonaws:aws-java-sdk-dynamodb:1.11.563' + //swagger + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' } tasks.named('test') { From ce6035b1e9ea8f551952f32f1d4bea85d87ecdb4 Mon Sep 17 00:00:00 2001 From: junseokkim Date: Sun, 8 Sep 2024 15:58:24 +0900 Subject: [PATCH 2/3] feat: add SwaggerConfig --- .../ohhanahana/config/SwaggerConfig.java | 18 ++++++++++++++++++ .../ohhanahana/controller/BusController.java | 7 +++++++ 2 files changed, 25 insertions(+) create mode 100644 src/main/java/com/cloudcomputing/ohhanahana/config/SwaggerConfig.java diff --git a/src/main/java/com/cloudcomputing/ohhanahana/config/SwaggerConfig.java b/src/main/java/com/cloudcomputing/ohhanahana/config/SwaggerConfig.java new file mode 100644 index 0000000..5f1548f --- /dev/null +++ b/src/main/java/com/cloudcomputing/ohhanahana/config/SwaggerConfig.java @@ -0,0 +1,18 @@ +package com.cloudcomputing.ohhanahana.config; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SwaggerConfig { + + @Bean + public OpenAPI customOpenAPI() { + return new OpenAPI() + .info(new Info().title("오하나하나 API") + .version("1.0") + .description("API documentation for 오하나하나 application")); + } +} diff --git a/src/main/java/com/cloudcomputing/ohhanahana/controller/BusController.java b/src/main/java/com/cloudcomputing/ohhanahana/controller/BusController.java index 7092f26..36884e7 100644 --- a/src/main/java/com/cloudcomputing/ohhanahana/controller/BusController.java +++ b/src/main/java/com/cloudcomputing/ohhanahana/controller/BusController.java @@ -4,6 +4,8 @@ import com.cloudcomputing.ohhanahana.dto.response.RecommendResponse; import com.cloudcomputing.ohhanahana.dto.response.ShuttleResponse; import com.cloudcomputing.ohhanahana.service.BusService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.xml.bind.JAXBException; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Tag(name = "버스 API", description = "버스 관련 API") @RestController @RequiredArgsConstructor @RequestMapping("/bus") @@ -18,6 +21,7 @@ public class BusController { private final BusService busService; + @Operation(summary = "주변 정류장 버스 도착 정보 조회 API", description = "주변 정류장 버스 도착 정보를 조회하는 API입니다.") @GetMapping("/recommend") public ResponseEntity recommendBus() { try { @@ -28,6 +32,7 @@ public ResponseEntity recommendBus() { } } + @Operation(summary = "셔틀버스 도착 정보 조회 API", description = "셔틀버스 도착 정보를 조회하는 API입니다.") @GetMapping("/shuttle") public ResponseEntity shuttleBus() { return busService.getShuttleBus() @@ -35,6 +40,7 @@ public ResponseEntity shuttleBus() { .orElseGet(() -> ResponseEntity.ok(null)); } + @Operation(summary = "전체 버스 도착 정보 조회 API", description = "전체 버스 도착 정보를 조회하는 API입니다.") @GetMapping public ResponseEntity findAllBus() { try { @@ -45,6 +51,7 @@ public ResponseEntity findAllBus() { } } + @Operation(summary = "511번 버스 도착 정보 조회 API", description = "511번 버스 도착 정보를 조회하는 API입니다.") @GetMapping("/511") public ResponseEntity get511Bus() { try { From b2d16752f4d747ca928ea51664f7019abf01752a Mon Sep 17 00:00:00 2001 From: junseokkim Date: Sun, 8 Sep 2024 15:58:42 +0900 Subject: [PATCH 3/3] feat: add swagger annotation in api --- .../ohhanahana/controller/PersonController.java | 9 ++++++++- .../ohhanahana/controller/SensorDataController.java | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cloudcomputing/ohhanahana/controller/PersonController.java b/src/main/java/com/cloudcomputing/ohhanahana/controller/PersonController.java index b016cd6..2b529a9 100644 --- a/src/main/java/com/cloudcomputing/ohhanahana/controller/PersonController.java +++ b/src/main/java/com/cloudcomputing/ohhanahana/controller/PersonController.java @@ -2,8 +2,9 @@ import com.cloudcomputing.ohhanahana.entity.Person; import com.cloudcomputing.ohhanahana.repository.PersonRepository; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import java.util.List; -import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Tag(name = "Person API", description = "Person 관련 API") @RestController @RequestMapping("/persons") public class PersonController { @@ -21,28 +23,33 @@ public class PersonController { @Autowired private PersonRepository personRepository; + @Operation(summary = "Person 저장 API", description = "Person을 저장하는 API입니다.") @PostMapping public Person save(@RequestBody Person person) { return personRepository.save(person); } + @Operation(summary = "Person 조회 API", description = "Person을 조회하는 API입니다.") @GetMapping("/{id}") public Person findById(@PathVariable(value = "id") String id) { return personRepository.findById(id); } + @Operation(summary = "Person 전체 조회 API", description = "Person 전체를 조회하는 API입니다.") @GetMapping("/all") public List findAll() { return personRepository.findAll(); } + @Operation(summary = "Person 수정 API", description = "Person을 수정하는 API입니다.") @PutMapping("/{id}") public String update(@PathVariable(value="id") String id, @RequestBody Person person) { return personRepository.update(id, person); } + @Operation(summary = "Person 삭제 API", description = "Person을 삭제하는 API입니다.") @DeleteMapping("/{id}") public String delete(@PathVariable(value="id") String id) { return personRepository.delete(id); diff --git a/src/main/java/com/cloudcomputing/ohhanahana/controller/SensorDataController.java b/src/main/java/com/cloudcomputing/ohhanahana/controller/SensorDataController.java index 68ce14d..1813eb2 100644 --- a/src/main/java/com/cloudcomputing/ohhanahana/controller/SensorDataController.java +++ b/src/main/java/com/cloudcomputing/ohhanahana/controller/SensorDataController.java @@ -2,6 +2,8 @@ import com.cloudcomputing.ohhanahana.dto.response.SensorDataResponse; import com.cloudcomputing.ohhanahana.service.SensorDataService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.xml.bind.JAXBException; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -9,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Tag(name = "혼잡도 API", description = "혼잡도 관련 API") @RestController @RequiredArgsConstructor @RequestMapping("/congestion") @@ -16,11 +19,13 @@ public class SensorDataController { private final SensorDataService sensorDataService; + @Operation(summary = "혼잡도 조회 API", description = "혼잡도를 조회하는 API입니다.") @GetMapping("/") public ResponseEntity findTest() throws JAXBException { return ResponseEntity.ok(sensorDataService.findLatestSensorData()); } + @Operation(summary = "혼잡도 랜덤 조회 API", description = "혼잡도를 랜덤으로 조회하는 API입니다.") @GetMapping("/random") public ResponseEntity findRandomSensorData() throws JAXBException { return ResponseEntity.ok(sensorDataService.generateRandomSensorData());