From 67ae82b6632f0482960ffa4bfb49d37cecd9bb20 Mon Sep 17 00:00:00 2001 From: hoyeonyy Date: Mon, 15 Jul 2024 19:50:20 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Swagger=20API=20=EB=AA=85=EC=84=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/build.gradle | 44 ++++++++++--------- .../{ApiResponse.java => RestResponse.java} | 2 +- .../moim/controller/MoimController.java | 25 ++++++++--- 3 files changed, 43 insertions(+), 28 deletions(-) rename backend/src/main/java/mouda/backend/common/{ApiResponse.java => RestResponse.java} (77%) diff --git a/backend/build.gradle b/backend/build.gradle index a33e16694..1da24c5b0 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -1,41 +1,43 @@ plugins { - id 'java' - id 'org.springframework.boot' version '3.3.1' - id 'io.spring.dependency-management' version '1.1.5' + id 'java' + id 'org.springframework.boot' version '3.3.1' + id 'io.spring.dependency-management' version '1.1.5' } group = 'mouda' version = '0.0.1-SNAPSHOT' java { - toolchain { - languageVersion = JavaLanguageVersion.of(17) - } + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } configurations { - compileOnly { - extendsFrom annotationProcessor - } + compileOnly { + extendsFrom annotationProcessor + } } repositories { - mavenCentral() + mavenCentral() } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-web' - compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.h2database:h2' - runtimeOnly 'com.mysql:mysql-connector-j' - annotationProcessor 'org.projectlombok:lombok' - - testImplementation 'io.rest-assured:rest-assured:5.3.1' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-web' + compileOnly 'org.projectlombok:lombok' + runtimeOnly 'com.h2database:h2' + runtimeOnly 'com.mysql:mysql-connector-j' + annotationProcessor 'org.projectlombok:lombok' + + testImplementation 'io.rest-assured:rest-assured:5.3.1' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' } tasks.named('test') { - useJUnitPlatform() + useJUnitPlatform() } diff --git a/backend/src/main/java/mouda/backend/common/ApiResponse.java b/backend/src/main/java/mouda/backend/common/RestResponse.java similarity index 77% rename from backend/src/main/java/mouda/backend/common/ApiResponse.java rename to backend/src/main/java/mouda/backend/common/RestResponse.java index 3146b111a..2d823bdee 100644 --- a/backend/src/main/java/mouda/backend/common/ApiResponse.java +++ b/backend/src/main/java/mouda/backend/common/RestResponse.java @@ -3,6 +3,6 @@ import lombok.AllArgsConstructor; @AllArgsConstructor -public class ApiResponse { +public class RestResponse { private T data; } diff --git a/backend/src/main/java/mouda/backend/moim/controller/MoimController.java b/backend/src/main/java/mouda/backend/moim/controller/MoimController.java index d798fb090..2ceee8c39 100644 --- a/backend/src/main/java/mouda/backend/moim/controller/MoimController.java +++ b/backend/src/main/java/mouda/backend/moim/controller/MoimController.java @@ -4,29 +4,42 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; import lombok.RequiredArgsConstructor; -import mouda.backend.common.ApiResponse; +import mouda.backend.common.RestResponse; import mouda.backend.moim.domain.Moim; import mouda.backend.moim.dto.request.MoimCreateRequest; import mouda.backend.moim.dto.response.MoimFindAllResponses; import mouda.backend.moim.service.MoimService; -@RestController("/v1/moim") +@RestController +@RequestMapping("/v1/moim") @RequiredArgsConstructor public class MoimController { private final MoimService moimService; + @Operation(summary = "모임 생성", description = "모임을 생성한다.") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "모임 생성 성공!"), + }) @PostMapping - public ResponseEntity> createMoim(@RequestBody MoimCreateRequest moimCreateRequest) { + public ResponseEntity> createMoim(@RequestBody MoimCreateRequest moimCreateRequest) { Moim moim = moimService.createMoim(moimCreateRequest); - return ResponseEntity.ok().body(new ApiResponse<>(moim.getId())); + return ResponseEntity.ok().body(new RestResponse<>(moim.getId())); } + @Operation(summary = "모임 전체 조회", description = "모든 모임을 조회한다.") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "모임 조회 성공!"), + }) @GetMapping - public ResponseEntity> findAllMoim() { - return ResponseEntity.ok().body(new ApiResponse<>(moimService.findAllMoim())); + public ResponseEntity> findAllMoim() { + return ResponseEntity.ok().body(new RestResponse<>(moimService.findAllMoim())); } }