From 91ac502218b96e8536be8b42deb0aa358176c246 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 10 Dec 2024 00:58:38 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20swagger=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicationController.java | 2 +- .../ApplicationControllerSwagger.java | 36 ----- .../application/dto/ApplicantResponse.java | 11 -- .../dto/ApplicationSubmissionResponse.java | 4 - .../application/dto/ApplicationsResponse.java | 9 -- .../application/dto/ApplyRequest.java | 4 - .../dto/UniversityApplicantsResponse.java | 12 -- .../dto/UniversityChoiceRequest.java | 6 - .../auth/controller/AuthController.java | 2 +- .../controller/AuthControllerSwagger.java | 116 --------------- .../auth/dto/ReissueResponse.java | 4 - .../auth/dto/SignInResponse.java | 7 - .../auth/dto/SignUpRequest.java | 20 +-- .../auth/dto/SignUpResponse.java | 6 - .../auth/dto/kakao/FirstAccessResponse.java | 12 -- .../auth/dto/kakao/KakaoCodeRequest.java | 4 - .../board/controller/BoardController.java | 6 - .../comment/controller/CommentController.java | 6 - .../config/swagger/SwaggerConfig.java | 40 ------ .../post/controller/PostController.java | 6 - .../solidconnection/s3/S3Controller.java | 2 +- .../s3/S3ControllerSwagger.java | 136 ------------------ .../s3/UploadedFileUrlResponse.java | 4 - .../score/controller/ScoreController.java | 6 - .../score/dto/GpaScoreRequest.java | 6 - .../score/dto/LanguageTestScoreRequest.java | 6 - .../controller/SiteUserController.java | 2 +- .../controller/SiteUserControllerSwagger.java | 52 ------- .../siteuser/dto/MyPageResponse.java | 17 --- .../siteuser/dto/MyPageUpdateRequest.java | 4 - .../siteuser/dto/MyPageUpdateResponse.java | 5 - .../siteuser/dto/NicknameUpdateRequest.java | 2 - .../siteuser/dto/NicknameUpdateResponse.java | 2 - .../dto/ProfileImageUpdateResponse.java | 2 - .../controller/UniversityController.java | 2 +- .../UniversityControllerSwagger.java | 124 ---------------- .../university/dto/IsLikeResponse.java | 4 - .../dto/LanguageRequirementResponse.java | 5 - .../university/dto/LikeResultResponse.java | 4 - .../dto/UniversityDetailResponse.java | 54 ------- ...UniversityInfoForApplyPreviewResponse.java | 18 --- .../dto/UniversityRecommendsResponse.java | 5 - 42 files changed, 7 insertions(+), 768 deletions(-) delete mode 100644 src/main/java/com/example/solidconnection/application/controller/ApplicationControllerSwagger.java delete mode 100644 src/main/java/com/example/solidconnection/auth/controller/AuthControllerSwagger.java delete mode 100644 src/main/java/com/example/solidconnection/config/swagger/SwaggerConfig.java delete mode 100644 src/main/java/com/example/solidconnection/s3/S3ControllerSwagger.java delete mode 100644 src/main/java/com/example/solidconnection/siteuser/controller/SiteUserControllerSwagger.java delete mode 100644 src/main/java/com/example/solidconnection/university/controller/UniversityControllerSwagger.java diff --git a/src/main/java/com/example/solidconnection/application/controller/ApplicationController.java b/src/main/java/com/example/solidconnection/application/controller/ApplicationController.java index 6242180aa..dce62235f 100644 --- a/src/main/java/com/example/solidconnection/application/controller/ApplicationController.java +++ b/src/main/java/com/example/solidconnection/application/controller/ApplicationController.java @@ -21,7 +21,7 @@ @RequiredArgsConstructor @RequestMapping("/application") @RestController -public class ApplicationController implements ApplicationControllerSwagger { +public class ApplicationController { private final ApplicationSubmissionService applicationSubmissionService; private final ApplicationQueryService applicationQueryService; diff --git a/src/main/java/com/example/solidconnection/application/controller/ApplicationControllerSwagger.java b/src/main/java/com/example/solidconnection/application/controller/ApplicationControllerSwagger.java deleted file mode 100644 index 3b93dea4c..000000000 --- a/src/main/java/com/example/solidconnection/application/controller/ApplicationControllerSwagger.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.example.solidconnection.application.controller; - -import com.example.solidconnection.application.dto.ApplicationsResponse; -import io.swagger.v3.oas.annotations.Operation; -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.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestParam; - -import java.security.Principal; - -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - -@Tag(name = "Application", description = "지원 정보 API") -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) -public interface ApplicationControllerSwagger { - @Operation( - summary = "지원자 목록 조회", - responses = { - @ApiResponse( - responseCode = "200", - description = "지원자 목록 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = ApplicationsResponse.class) - ) - ) - } - ) - ResponseEntity getApplicants(Principal principal, @RequestParam(required = false) String region, @RequestParam(required = false) String keyword); -} diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplicantResponse.java b/src/main/java/com/example/solidconnection/application/dto/ApplicantResponse.java index b6b5ee477..9835491b1 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplicantResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplicantResponse.java @@ -2,23 +2,12 @@ import com.example.solidconnection.application.domain.Application; import com.example.solidconnection.type.LanguageTestType; -import io.swagger.v3.oas.annotations.media.Schema; -@Schema(description = "지원자") public record ApplicantResponse( - @Schema(description = "닉네임", example = "행복한 개발자") String nicknameForApply, - - @Schema(description = "GPA", example = "3.85") double gpa, - - @Schema(description = "어학 시험 유형", example = "TOEFL_IBT") LanguageTestType testType, - - @Schema(description = "어학 시험 점수", example = "110") String testScore, - - @Schema(description = "현재 사용자가 해당 지원지인지", example = "true") boolean isMine) { public static ApplicantResponse of(Application application, boolean isMine) { diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java b/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java index fe112a8d0..4f353733b 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java @@ -1,9 +1,5 @@ package com.example.solidconnection.application.dto; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "지원 정보 제출 성공 여부") public record ApplicationSubmissionResponse( - @Schema(description = "제출 성공 여부", example = "true") boolean isSuccess) { } diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java b/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java index 3d5e2ca88..a3429c1ef 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java @@ -1,18 +1,9 @@ package com.example.solidconnection.application.dto; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; - import java.util.List; -@Schema(description = "지망별 지원자 목록") public record ApplicationsResponse( - @ArraySchema(arraySchema = @Schema(description = "1지망 대학에 지원한 지원자 목록")) List firstChoice, - - @ArraySchema(arraySchema = @Schema(description = "2지망 대학에 지원한 지원자 목록")) List secondChoice, - - @ArraySchema(arraySchema = @Schema(description = "3지망 대학에 지원한 지원자 목록")) List thirdChoice) { } diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java b/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java index 3a5d7f2f5..49c4b01ce 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java @@ -1,16 +1,12 @@ package com.example.solidconnection.application.dto; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; -@Schema(description = "지원서 제출") public record ApplyRequest( @NotNull(message = "gpa score id를 입력해주세요.") - @Schema(description = "지원하는 유저의 gpa score id", example = "1") Long gpaScoreId, @NotNull(message = "language test score id를 입력해주세요.") - @Schema(description = "지원하는 유저의 language test score id", example = "1") Long languageTestScoreId, UniversityChoiceRequest universityChoiceRequest diff --git a/src/main/java/com/example/solidconnection/application/dto/UniversityApplicantsResponse.java b/src/main/java/com/example/solidconnection/application/dto/UniversityApplicantsResponse.java index 84751786b..1d3415003 100644 --- a/src/main/java/com/example/solidconnection/application/dto/UniversityApplicantsResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/UniversityApplicantsResponse.java @@ -1,26 +1,14 @@ package com.example.solidconnection.application.dto; import com.example.solidconnection.university.domain.UniversityInfoForApply; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; -@Schema(description = "대학과 그 대학에 지원한 지원자 정보") public record UniversityApplicantsResponse( - @Schema(description = "대학의 한국어 이름", example = "괌대학") String koreanName, - - @Schema(description = "선발 인원", example = "4") int studentCapacity, - - @Schema(description = "지역", example = "영미권") String region, - - @Schema(description = "국가", example = "미국") String country, - - @ArraySchema(schema = @Schema(description = "지원자 목록", implementation = ApplicantResponse.class)) List applicants) { public static UniversityApplicantsResponse of(UniversityInfoForApply universityInfoForApply, List applicant) { diff --git a/src/main/java/com/example/solidconnection/application/dto/UniversityChoiceRequest.java b/src/main/java/com/example/solidconnection/application/dto/UniversityChoiceRequest.java index 033de880a..2d05cfe5b 100644 --- a/src/main/java/com/example/solidconnection/application/dto/UniversityChoiceRequest.java +++ b/src/main/java/com/example/solidconnection/application/dto/UniversityChoiceRequest.java @@ -1,17 +1,11 @@ package com.example.solidconnection.application.dto; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; -@Schema(description = "지망 대학") public record UniversityChoiceRequest( @NotNull(message = "1지망 대학교를 입력해주세요.") - @Schema(description = "1지망 대학교의 지원 정보 ID", example = "1") Long firstChoiceUniversityId, - @Schema(description = "2지망 대학교의 지원 정보 ID (선택사항)", example = "2", nullable = true) Long secondChoiceUniversityId, - - @Schema(description = "3지망 대학교의 지원 정보 ID (선택사항)", example = "3", nullable = true) Long thirdChoiceUniversityId) { } diff --git a/src/main/java/com/example/solidconnection/auth/controller/AuthController.java b/src/main/java/com/example/solidconnection/auth/controller/AuthController.java index b73812a2a..5f48124dc 100644 --- a/src/main/java/com/example/solidconnection/auth/controller/AuthController.java +++ b/src/main/java/com/example/solidconnection/auth/controller/AuthController.java @@ -22,7 +22,7 @@ @RequiredArgsConstructor @RequestMapping("/auth") @RestController -public class AuthController implements AuthControllerSwagger { +public class AuthController { private final AuthService authService; private final SignUpService signUpService; diff --git a/src/main/java/com/example/solidconnection/auth/controller/AuthControllerSwagger.java b/src/main/java/com/example/solidconnection/auth/controller/AuthControllerSwagger.java deleted file mode 100644 index 28ce96f69..000000000 --- a/src/main/java/com/example/solidconnection/auth/controller/AuthControllerSwagger.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.example.solidconnection.auth.controller; - -import com.example.solidconnection.auth.dto.ReissueResponse; -import com.example.solidconnection.auth.dto.SignInResponse; -import com.example.solidconnection.auth.dto.SignUpRequest; -import com.example.solidconnection.auth.dto.SignUpResponse; -import com.example.solidconnection.auth.dto.kakao.FirstAccessResponse; -import com.example.solidconnection.auth.dto.kakao.KakaoCodeRequest; -import com.example.solidconnection.auth.dto.kakao.KakaoOauthResponse; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.parameters.RequestBody; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import org.springframework.http.ResponseEntity; - -import java.security.Principal; - -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - -@Tag(name = "Auth", description = "인증 API") -public interface AuthControllerSwagger { - - @Operation( - summary = "카카오 OAuth 처리", - requestBody = @RequestBody( - description = "클라이언트가 받아온 카카오 인증 코드", - required = true, - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = KakaoCodeRequest.class) - ) - ), - responses = { - @ApiResponse( - responseCode = "200", - description = "로그인 성공 또는 회원가입을 위한 사용자 정보 불러오기 성공", - content = @Content( - mediaType = "application/json", - schema = @Schema(oneOf = {SignInResponse.class, FirstAccessResponse.class}) - ) - ) - } - ) - ResponseEntity processKakaoOauth(@RequestBody KakaoCodeRequest kakaoCodeRequest); - - @Operation( - summary = "회원가입", - requestBody = @RequestBody( - description = "회원가입 요청 정보", - required = true, - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = SignUpRequest.class) - ) - ), - responses = { - @ApiResponse( - responseCode = "200", - description = "회원가입 성공, 엑세스 토큰과 리프레시 토큰 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = SignUpResponse.class) - ) - ) - } - ) - ResponseEntity signUp(@Valid @RequestBody SignUpRequest signUpRequest); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "로그아웃", - responses = { - @ApiResponse( - responseCode = "204", - description = "로그아웃 성공" - ) - } - ) - ResponseEntity signOut(Principal principal); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "회원 탈퇴", - responses = { - @ApiResponse( - responseCode = "200", - description = "회원 탈퇴 성공" - ) - } - ) - ResponseEntity quit(Principal principal); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "토큰 재발급", - responses = { - @ApiResponse( - responseCode = "200", - description = "토큰 재발급 성공, 새 토큰 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = ReissueResponse.class) - ) - ) - } - ) - ResponseEntity reissueToken(Principal principal); -} diff --git a/src/main/java/com/example/solidconnection/auth/dto/ReissueResponse.java b/src/main/java/com/example/solidconnection/auth/dto/ReissueResponse.java index 5e6097d38..48b55e6cb 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/ReissueResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/ReissueResponse.java @@ -1,9 +1,5 @@ package com.example.solidconnection.auth.dto; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "토큰 재발급 응답") public record ReissueResponse( - @Schema(description = "새로 발급된 액세스 토큰", example = "newAccessToken123") String accessToken) { } diff --git a/src/main/java/com/example/solidconnection/auth/dto/SignInResponse.java b/src/main/java/com/example/solidconnection/auth/dto/SignInResponse.java index 41d9425cb..400491b42 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/SignInResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/SignInResponse.java @@ -1,16 +1,9 @@ package com.example.solidconnection.auth.dto; import com.example.solidconnection.auth.dto.kakao.KakaoOauthResponse; -import io.swagger.v3.oas.annotations.media.Schema; -@Schema(description = "로그인 응답 데이터") public record SignInResponse( - @Schema(description = "사용자 등록 여부", example = "true") boolean isRegistered, - - @Schema(description = "발급된 액세스 토큰", example = "accessTokenExample123") String accessToken, - - @Schema(description = "발급된 리프레시 토큰", example = "refreshTokenExample123") String refreshToken) implements KakaoOauthResponse { } diff --git a/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java b/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java index e77cbd31b..fcb68cad1 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java @@ -5,38 +5,22 @@ import com.example.solidconnection.type.PreparationStatus; import com.example.solidconnection.type.Role; import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import java.util.List; -@Schema(description = "회원가입 요청 데이터") public record SignUpRequest( - @Schema(description = "카카오 인증 토큰", example = "kakaoToken123") String kakaoOauthToken, - - @ArraySchema(schema = @Schema(description = "관심 지역 목록", example = "아시아권")) List interestedRegions, - - @ArraySchema(schema = @Schema(description = "관심 국가 목록", example = "일본")) List interestedCountries, - - @Schema(description = "지원 준비 단계", example = "CONSIDERING") PreparationStatus preparationStatus, + String profileImageUrl, + Gender gender, @NotBlank(message = "닉네임을 입력해주세요.") - @Schema(description = "닉네임", example = "nickname123") String nickname, - @Schema(description = "프로필 이미지 URL", example = "http://example.com/profile.jpg") - String profileImageUrl, - - @Schema(description = "성별", example = "MALE") - Gender gender, - @JsonFormat(pattern = "yyyy-MM-dd") - @Schema(description = "생년월일", example = "1999-01-01") String birth) { public SiteUser toSiteUser(String email, Role role) { diff --git a/src/main/java/com/example/solidconnection/auth/dto/SignUpResponse.java b/src/main/java/com/example/solidconnection/auth/dto/SignUpResponse.java index b43eb95e8..2d74610cc 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/SignUpResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/SignUpResponse.java @@ -1,12 +1,6 @@ package com.example.solidconnection.auth.dto; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "회원가입 후 응답 데이터") public record SignUpResponse( - @Schema(description = "액세스 토큰", example = "accessTokenSignup123") String accessToken, - - @Schema(description = "리프레시 토큰", example = "refreshTokenSignup123") String refreshToken) { } diff --git a/src/main/java/com/example/solidconnection/auth/dto/kakao/FirstAccessResponse.java b/src/main/java/com/example/solidconnection/auth/dto/kakao/FirstAccessResponse.java index d766099ed..6d7130bf0 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/kakao/FirstAccessResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/kakao/FirstAccessResponse.java @@ -1,22 +1,10 @@ package com.example.solidconnection.auth.dto.kakao; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "등록되지 않은 사용자의 최초 접속 시 응답 데이터") public record FirstAccessResponse( - @Schema(description = "사용자 등록 여부", example = "false") boolean isRegistered, - - @Schema(description = "카카오 닉네임", example = "홍길동") String nickname, - - @Schema(description = "이메일", example = "user@example.com") String email, - - @Schema(description = "카카오 프로필 이미지 URL", example = "http://example.com/image.jpg") String profileImageUrl, - - @Schema(description = "우리 서비스에사 발급한 카카오 인증 토큰", example = "abc123xyz") String kakaoOauthToken) implements KakaoOauthResponse { public static FirstAccessResponse of(KakaoUserInfoDto kakaoUserInfoDto, String kakaoOauthToken) { diff --git a/src/main/java/com/example/solidconnection/auth/dto/kakao/KakaoCodeRequest.java b/src/main/java/com/example/solidconnection/auth/dto/kakao/KakaoCodeRequest.java index fcdbefb40..4fcfc5576 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/kakao/KakaoCodeRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/kakao/KakaoCodeRequest.java @@ -1,9 +1,5 @@ package com.example.solidconnection.auth.dto.kakao; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "클라이언트에서 받은 카카오 코드") public record KakaoCodeRequest( - @Schema(description = "카카오 코드", example = "ABCD1234") String code) { } diff --git a/src/main/java/com/example/solidconnection/board/controller/BoardController.java b/src/main/java/com/example/solidconnection/board/controller/BoardController.java index 1777603cd..f6ebb27d0 100644 --- a/src/main/java/com/example/solidconnection/board/controller/BoardController.java +++ b/src/main/java/com/example/solidconnection/board/controller/BoardController.java @@ -3,8 +3,6 @@ import com.example.solidconnection.board.service.BoardService; import com.example.solidconnection.post.dto.BoardFindPostResponse; import com.example.solidconnection.type.BoardCode; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -16,13 +14,9 @@ import java.util.ArrayList; import java.util.List; -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - @RestController @RequiredArgsConstructor @RequestMapping("/communities") -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) public class BoardController { private final BoardService boardService; diff --git a/src/main/java/com/example/solidconnection/comment/controller/CommentController.java b/src/main/java/com/example/solidconnection/comment/controller/CommentController.java index bcb50715c..a7eaab252 100644 --- a/src/main/java/com/example/solidconnection/comment/controller/CommentController.java +++ b/src/main/java/com/example/solidconnection/comment/controller/CommentController.java @@ -6,8 +6,6 @@ import com.example.solidconnection.comment.dto.CommentUpdateRequest; import com.example.solidconnection.comment.dto.CommentUpdateResponse; import com.example.solidconnection.comment.service.CommentService; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -21,13 +19,9 @@ import java.security.Principal; -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - @RestController @RequiredArgsConstructor @RequestMapping("/posts") -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) public class CommentController { private final CommentService commentService; diff --git a/src/main/java/com/example/solidconnection/config/swagger/SwaggerConfig.java b/src/main/java/com/example/solidconnection/config/swagger/SwaggerConfig.java deleted file mode 100644 index 82902d32b..000000000 --- a/src/main/java/com/example/solidconnection/config/swagger/SwaggerConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.example.solidconnection.config.swagger; - -import io.swagger.v3.oas.annotations.enums.SecuritySchemeIn; -import io.swagger.v3.oas.annotations.security.SecurityScheme; -import io.swagger.v3.oas.models.Components; -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; - -import static io.swagger.v3.oas.annotations.enums.SecuritySchemeType.HTTP; - -@Configuration -@SecurityScheme( - name = "access_token", - type = HTTP, - in = SecuritySchemeIn.HEADER, - scheme = "bearer", - bearerFormat = "JWT", - paramName = "Authorization", - description = "엑세스 토큰을 입력하세요. (Bearer 포함 X)" -) -public class SwaggerConfig { - - public static final String ACCESS_TOKEN = "access_token"; - - @Bean - public OpenAPI customOpenAPI() { - return new OpenAPI() - .components(new Components()) - .info(apiInfo()); - } - - private Info apiInfo() { - return new Info() - .title("솔리드 커넥션 API 문서✈️") - .description("솔리드 커넥션의 API 문서입니다. \n\"Authorize\" 버튼을 눌러 인증을 하면 인증이 필요한 API를 호출할 수 있습니다.") - .version("1.0.0"); - } -} diff --git a/src/main/java/com/example/solidconnection/post/controller/PostController.java b/src/main/java/com/example/solidconnection/post/controller/PostController.java index cd287809b..05cdfc574 100644 --- a/src/main/java/com/example/solidconnection/post/controller/PostController.java +++ b/src/main/java/com/example/solidconnection/post/controller/PostController.java @@ -9,8 +9,6 @@ import com.example.solidconnection.post.dto.PostUpdateRequest; import com.example.solidconnection.post.dto.PostUpdateResponse; import com.example.solidconnection.post.service.PostService; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -29,13 +27,9 @@ import java.util.Collections; import java.util.List; -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - @RestController @RequiredArgsConstructor @RequestMapping("/communities") -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) public class PostController { private final PostService postService; diff --git a/src/main/java/com/example/solidconnection/s3/S3Controller.java b/src/main/java/com/example/solidconnection/s3/S3Controller.java index 2c513cb8c..0f32a4ab6 100644 --- a/src/main/java/com/example/solidconnection/s3/S3Controller.java +++ b/src/main/java/com/example/solidconnection/s3/S3Controller.java @@ -16,7 +16,7 @@ @RequiredArgsConstructor @RequestMapping("/file") @RestController -public class S3Controller implements S3ControllerSwagger { +public class S3Controller { private final S3Service s3Service; diff --git a/src/main/java/com/example/solidconnection/s3/S3ControllerSwagger.java b/src/main/java/com/example/solidconnection/s3/S3ControllerSwagger.java deleted file mode 100644 index bce6bfe15..000000000 --- a/src/main/java/com/example/solidconnection/s3/S3ControllerSwagger.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.example.solidconnection.s3; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.parameters.RequestBody; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; - -import java.security.Principal; - -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - -@Tag(name = "ImageUpload", description = "S3 파일 업로드 API") -public interface S3ControllerSwagger { - - @Operation( - summary = "회원가입 전 프로필 이미지 업로드 - 프로필 이미지 설정", - requestBody = @RequestBody( - description = "업로드할 프로필 이미지 파일", - required = true, - content = @Content( - mediaType = "multipart/form-data", - schema = @Schema(implementation = MultipartFile.class) - ) - ), - responses = { - @ApiResponse( - responseCode = "200", - description = "프로필 이미지 업로드 성공, URL 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = UploadedFileUrlResponse.class) - ) - ) - } - ) - ResponseEntity uploadPreProfileImage(@RequestParam("file") MultipartFile imageFile); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "회원가입 후 프로필 이미지 업로드 - 프로필 이미지 수정", - requestBody = @RequestBody( - description = "업로드할 프로필 이미지 파일", - required = true, - content = @Content( - mediaType = "multipart/form-data", - schema = @Schema(implementation = MultipartFile.class) - ) - ), - responses = { - @ApiResponse( - responseCode = "200", - description = "프로필 이미지 업로드 성공 후 기존 이미지 삭제, URL 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = UploadedFileUrlResponse.class) - ) - ) - } - ) - ResponseEntity uploadPostProfileImage(@RequestParam("file") MultipartFile imageFile, Principal principal); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "GPA 증명서 이미지 업로드", - requestBody = @RequestBody( - description = "업로드할 GPA 증명서 이미지 파일", - required = true, - content = @Content( - mediaType = "multipart/form-data", - schema = @Schema(implementation = MultipartFile.class) - ) - ), - responses = { - @ApiResponse( - responseCode = "200", - description = "GPA 증명서 이미지 업로드 성공, URL 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = UploadedFileUrlResponse.class) - ) - ) - } - ) - ResponseEntity uploadGpaImage(@RequestParam("file") MultipartFile imageFile); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "어학 시험 증명서 이미지 업로드", - requestBody = @RequestBody( - description = "업로드할 어학 시험 증명서 이미지 파일", - required = true, - content = @Content( - mediaType = "multipart/form-data", - schema = @Schema(implementation = MultipartFile.class) - ) - ), - responses = { - @ApiResponse( - responseCode = "200", - description = "어학 시험 증명서 이미지 업로드 성공, URL 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = UploadedFileUrlResponse.class) - ) - ) - } - ) - ResponseEntity uploadLanguageImage(@RequestParam("file") MultipartFile imageFile); - - @SecurityRequirements - @SecurityRequirement(name = ACCESS_TOKEN) - @Operation( - summary = "S3 url prefix 확인", - responses = { - @ApiResponse( - responseCode = "200", - description = "S3 url prefix 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = urlPrefixResponse.class) - ) - ) - } - ) - ResponseEntity getS3UrlPrefix(); -} diff --git a/src/main/java/com/example/solidconnection/s3/UploadedFileUrlResponse.java b/src/main/java/com/example/solidconnection/s3/UploadedFileUrlResponse.java index 090f206f7..6d9b690fa 100644 --- a/src/main/java/com/example/solidconnection/s3/UploadedFileUrlResponse.java +++ b/src/main/java/com/example/solidconnection/s3/UploadedFileUrlResponse.java @@ -1,9 +1,5 @@ package com.example.solidconnection.s3; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "업로드된 파일의 URL 응답") public record UploadedFileUrlResponse( - @Schema(description = "파일 URL", example = "http://example.com/uploads/profile.jpg") String fileUrl) { } diff --git a/src/main/java/com/example/solidconnection/score/controller/ScoreController.java b/src/main/java/com/example/solidconnection/score/controller/ScoreController.java index 7550102aa..42ee7b009 100644 --- a/src/main/java/com/example/solidconnection/score/controller/ScoreController.java +++ b/src/main/java/com/example/solidconnection/score/controller/ScoreController.java @@ -5,8 +5,6 @@ import com.example.solidconnection.score.dto.LanguageTestScoreRequest; import com.example.solidconnection.score.dto.LanguageTestScoreStatusResponse; import com.example.solidconnection.score.service.ScoreService; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -18,13 +16,9 @@ import java.security.Principal; -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - @RestController @RequestMapping("/score") @RequiredArgsConstructor -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) public class ScoreController { private final ScoreService scoreService; diff --git a/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java b/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java index b655f6143..5227ba9ed 100644 --- a/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java +++ b/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java @@ -1,28 +1,22 @@ package com.example.solidconnection.score.dto; import com.example.solidconnection.application.domain.Gpa; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; -@Schema(description = "대학 성적과 어학 시험 성적") public record GpaScoreRequest( @NotNull(message = "학점을 입력해주세요.") - @Schema(description = "GPA", example = "3.5", required = true) Double gpa, @NotNull(message = "학점 기준을 입력해주세요.") - @Schema(description = "GPA 계산 기준", example = "4.0", required = true) Double gpaCriteria, @NotNull(message = "발급일자를 입력해주세요.") - @Schema(description = "발급일자", example = "2024-10-06", required = true) LocalDate issueDate, @NotBlank(message = "대학 성적 증명서를 첨부해주세요.") - @Schema(description = "대학 성적 증명서 URL", example = "http://example.com/gpa-report.pdf", required = true) String gpaReportUrl) { public Gpa toGpa() { diff --git a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java index 36687b6c2..c39e5fcb9 100644 --- a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java +++ b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java @@ -3,28 +3,22 @@ import com.example.solidconnection.application.domain.LanguageTest; import com.example.solidconnection.type.LanguageTestType; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; -@Schema(description = "대학 성적과 어학 시험 성적") public record LanguageTestScoreRequest( @NotNull(message = "어학 종류를 입력해주세요.") - @Schema(description = "어학 시험 종류", example = "TOEFL", required = true) LanguageTestType languageTestType, @NotBlank(message = "어학 점수를 입력해주세요.") - @Schema(description = "어학 시험 점수", example = "115", required = true) String languageTestScore, @NotNull(message = "발급일자를 입력해주세요.") - @Schema(description = "발급일자", example = "2024-10-06", required = true) LocalDate issueDate, @NotBlank(message = "어학 증명서를 첨부해주세요.") - @Schema(description = "어학 증명서 URL", example = "http://example.com/test-report.pdf", required = true) String languageTestReportUrl) { public LanguageTest toLanguageTest() { diff --git a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java index d03c69fa8..c0d58356f 100644 --- a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java +++ b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java @@ -22,7 +22,7 @@ @RequiredArgsConstructor @RequestMapping("/my-page") @RestController -class SiteUserController implements SiteUserControllerSwagger { +class SiteUserController { private final SiteUserService siteUserService; diff --git a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserControllerSwagger.java b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserControllerSwagger.java deleted file mode 100644 index 260610436..000000000 --- a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserControllerSwagger.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.example.solidconnection.siteuser.controller; - -import com.example.solidconnection.siteuser.dto.MyPageResponse; -import com.example.solidconnection.siteuser.dto.MyPageUpdateResponse; -import io.swagger.v3.oas.annotations.Operation; -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.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.http.ResponseEntity; - -import java.security.Principal; - -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - -@Tag(name = "SiteUser", description = "사용자 API") -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) -public interface SiteUserControllerSwagger { - - @Operation( - summary = "마이 페이지 페이지 정보 조회", - responses = { - @ApiResponse( - responseCode = "200", - description = "마이 페이지 정보 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = MyPageResponse.class) - ) - ) - } - ) - ResponseEntity getMyPageInfo(Principal principal); - - @Operation( - summary = "마이 페이지 정보 수정을 위한 데이터 조회", - responses = { - @ApiResponse( - responseCode = "200", - description = "수정 가능한 정보 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = MyPageUpdateResponse.class) - ) - ) - } - ) - ResponseEntity getMyPageInfoToUpdate(Principal principal); -} diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/MyPageResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/MyPageResponse.java index 88396f5b9..66a7dbef2 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/MyPageResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/MyPageResponse.java @@ -2,32 +2,15 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.type.Role; -import io.swagger.v3.oas.annotations.media.Schema; -@Schema(description = "마이페이지 페이지 정보 응답") public record MyPageResponse( - @Schema(description = "닉네임", example = "nickname") String nickname, - - @Schema(description = "프로필 이미지 URL", example = "http://example.com/profile.jpg") String profileImageUrl, - - @Schema(description = "역할", example = "MENTEE") Role role, - - @Schema(description = "생년월일", example = "1990-01-01") String birth, - - @Schema(description = "이메일", example = "example@solid-conenct.net") String email, - - @Schema(description = "좋아요 누른 게시물 수", example = "0") int likedPostCount, - - @Schema(description = "좋아요 누른 멘토 수", example = "0") int likedMentorCount, - - @Schema(description = "좋아요 누른 대학 수", example = "3") int likedUniversityCount) { public static MyPageResponse of(SiteUser siteUser, int likedUniversityCount) { diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateRequest.java b/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateRequest.java index bb40e075d..11584d163 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateRequest.java @@ -1,16 +1,12 @@ package com.example.solidconnection.siteuser.dto; import com.example.solidconnection.siteuser.domain.SiteUser; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -@Schema(description = "마이 페이지 정보 수정 요청") public record MyPageUpdateRequest( @NotBlank(message = "닉네임을 입력해주세요.") - @Schema(description = "변경할 닉네임", example = "NewNickname") String nickname, - @Schema(description = "변경할 프로필 이미지 URL", example = "http://example.com/new-profile.jpg", nullable = true) String profileImageUrl) { public static MyPageUpdateRequest from(SiteUser siteUser) { diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateResponse.java index 5572d5a2d..78583405b 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/MyPageUpdateResponse.java @@ -1,14 +1,9 @@ package com.example.solidconnection.siteuser.dto; import com.example.solidconnection.siteuser.domain.SiteUser; -import io.swagger.v3.oas.annotations.media.Schema; -@Schema(description = "마이 페이지 정보 수정 응답") public record MyPageUpdateResponse( - @Schema(description = "업데이트된 사용자 닉네임", example = "UpdatedNickname") String nickname, - - @Schema(description = "업데이트된 프로필 이미지 URL", example = "http://example.com/updated-profile.jpg") String profileImageUrl) { public static MyPageUpdateResponse from(SiteUser siteUser) { diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java index 4627a7451..9b83969b4 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java @@ -1,11 +1,9 @@ package com.example.solidconnection.siteuser.dto; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; public record NicknameUpdateRequest( @NotBlank(message = "닉네임을 입력해주세요.") - @Schema(description = "변경할 닉네임", example = "NewNickname") String nickname ) { } diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java index 5a967fa6e..a59e71824 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java @@ -1,10 +1,8 @@ package com.example.solidconnection.siteuser.dto; import com.example.solidconnection.siteuser.domain.SiteUser; -import io.swagger.v3.oas.annotations.media.Schema; public record NicknameUpdateResponse( - @Schema(description = "업데이트된 사용자 닉네임", example = "UpdatedNickname") String nickname ) { public static NicknameUpdateResponse from(SiteUser siteUser) { diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java index 127578e2f..d806fde20 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java @@ -1,10 +1,8 @@ package com.example.solidconnection.siteuser.dto; import com.example.solidconnection.siteuser.domain.SiteUser; -import io.swagger.v3.oas.annotations.media.Schema; public record ProfileImageUpdateResponse( - @Schema(description = "업데이트된 프로필 이미지 URL", example = "http://example.com/updated-profile.jpg") String profileImageUrl ) { public static ProfileImageUpdateResponse from(SiteUser siteUser) { diff --git a/src/main/java/com/example/solidconnection/university/controller/UniversityController.java b/src/main/java/com/example/solidconnection/university/controller/UniversityController.java index 4d0609549..2bab9da1a 100644 --- a/src/main/java/com/example/solidconnection/university/controller/UniversityController.java +++ b/src/main/java/com/example/solidconnection/university/controller/UniversityController.java @@ -24,7 +24,7 @@ @RequiredArgsConstructor @RequestMapping("/university") @RestController -public class UniversityController implements UniversityControllerSwagger { +public class UniversityController { private final UniversityService universityService; private final UniversityRecommendService universityRecommendService; diff --git a/src/main/java/com/example/solidconnection/university/controller/UniversityControllerSwagger.java b/src/main/java/com/example/solidconnection/university/controller/UniversityControllerSwagger.java deleted file mode 100644 index e140917f2..000000000 --- a/src/main/java/com/example/solidconnection/university/controller/UniversityControllerSwagger.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.example.solidconnection.university.controller; - -import com.example.solidconnection.type.LanguageTestType; -import com.example.solidconnection.university.dto.IsLikeResponse; -import com.example.solidconnection.university.dto.LikeResultResponse; -import com.example.solidconnection.university.dto.UniversityDetailResponse; -import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; -import com.example.solidconnection.university.dto.UniversityRecommendsResponse; -import io.swagger.v3.oas.annotations.Operation; -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.security.SecurityRequirement; -import io.swagger.v3.oas.annotations.security.SecurityRequirements; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; - -import java.security.Principal; -import java.util.List; - -import static com.example.solidconnection.config.swagger.SwaggerConfig.ACCESS_TOKEN; - -@Tag(name = "University", description = "대학 및 대학 지원을 위한 정보 API") -@SecurityRequirements -@SecurityRequirement(name = ACCESS_TOKEN) -public interface UniversityControllerSwagger { - - @Operation( - summary = "대학 추천 목록 조회", - responses = { - @ApiResponse( - responseCode = "200", - description = "사용자별 개인화 된 대학 추천 목록 또는 일반 추천 목록 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = UniversityRecommendsResponse.class) - ) - ) - } - ) - ResponseEntity getUniversityRecommends(Principal principal); - - @Operation( - summary = "좋아요한 대학 목록 조회", - responses = { - @ApiResponse( - responseCode = "200", - description = "사용자가 좋아요한 대학 목록 반환", - content = @Content( - mediaType = "application/json", - array = @ArraySchema(schema = @Schema(implementation = UniversityInfoForApplyPreviewResponse.class)) - ) - ) - } - ) - ResponseEntity> getMyWishUniversity(Principal principal); - - @Operation( - summary = "대학 좋아요 여부 확인", - responses = { - @ApiResponse( - responseCode = "200", - description = "대학 좋아요 여부 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = IsLikeResponse.class) - ) - ) - } - ) - ResponseEntity getIsLiked(Principal principal, @PathVariable Long universityInfoForApplyId); - - @Operation( - summary = "대학 좋아요 하기", - responses = { - @ApiResponse( - responseCode = "200", - description = "대학 좋아요 결과 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = LikeResultResponse.class) - ) - ) - } - ) - ResponseEntity addWishUniversity(Principal principal, @PathVariable Long universityInfoForApplyId); - - @Operation( - summary = "대학 상세 정보 조회", - responses = { - @ApiResponse( - responseCode = "200", - description = "대학 상세 정보 반환", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = UniversityDetailResponse.class) - ) - ) - } - ) - ResponseEntity getUniversityDetails(@PathVariable Long universityInfoForApplyId); - - @Operation( - summary = "대학 검색", - responses = { - @ApiResponse( - responseCode = "200", - description = "검색 조건에 맞는 대학 목록 반환", - content = @Content( - mediaType = "application/json", - array = @ArraySchema(schema = @Schema(implementation = UniversityInfoForApplyPreviewResponse.class)) - ) - ) - } - ) - ResponseEntity> searchUniversity( - @RequestParam(required = false, defaultValue = "") String region, - @RequestParam(required = false, defaultValue = "") List keyword, - @RequestParam(required = false, defaultValue = "") LanguageTestType testType, - @RequestParam(required = false, defaultValue = "") String testScore); -} diff --git a/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java b/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java index bd62505bd..7d4aebbf9 100644 --- a/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java @@ -1,9 +1,5 @@ package com.example.solidconnection.university.dto; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "대학교 '좋아요' 여부") public record IsLikeResponse( - @Schema(description = "대학교 '좋아요' 여부", example = "true") boolean isLike) { } diff --git a/src/main/java/com/example/solidconnection/university/dto/LanguageRequirementResponse.java b/src/main/java/com/example/solidconnection/university/dto/LanguageRequirementResponse.java index 7b02108a2..8cc7b9733 100644 --- a/src/main/java/com/example/solidconnection/university/dto/LanguageRequirementResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/LanguageRequirementResponse.java @@ -2,14 +2,9 @@ import com.example.solidconnection.type.LanguageTestType; import com.example.solidconnection.university.domain.LanguageRequirement; -import io.swagger.v3.oas.annotations.media.Schema; -@Schema(description = "어학 성적 요구사항 응답") public record LanguageRequirementResponse( - @Schema(description = "어학 시험 유형", example = "TOEFL_IBT") LanguageTestType languageTestType, - - @Schema(description = "최소 점수 요구사항", example = "100") String minScore) implements Comparable { public static LanguageRequirementResponse from(LanguageRequirement languageRequirement) { diff --git a/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java b/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java index 29e81bc95..c67f2e408 100644 --- a/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java @@ -1,9 +1,5 @@ package com.example.solidconnection.university.dto; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "좋아요 결과 응답 데이터") public record LikeResultResponse( - @Schema(description = "좋아요 결과", example = "LIKE_SUCCESS") String result) { } diff --git a/src/main/java/com/example/solidconnection/university/dto/UniversityDetailResponse.java b/src/main/java/com/example/solidconnection/university/dto/UniversityDetailResponse.java index ed4c6109b..4121654a3 100644 --- a/src/main/java/com/example/solidconnection/university/dto/UniversityDetailResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/UniversityDetailResponse.java @@ -2,89 +2,35 @@ import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.domain.UniversityInfoForApply; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; -@Schema(description = "대학 세부 사항 응답 데이터") public record UniversityDetailResponse( - @Schema(description = "대학 지원을 위한 정보 id", example = "1") long id, - - @Schema(description = "모집 시기", example = "2024-2") String term, - - @Schema(description = "국문 이름", example = "그라츠 대학") String koreanName, - - @Schema(description = "영문 이름", example = "University of Graz") String englishName, - - @Schema(description = "서브스에서 사용되는 이름", example = "university_of_graz") String formatName, - - @Schema(description = "지역", example = "유럽") String region, - - @Schema(description = "국가", example = "오스트리아") String country, - - @Schema(description = "대학 홈페이지 URL", example = "http://www.graz.ac.kr") String homepageUrl, - - @Schema(description = "대학 로고 이미지 URL", example = "http://example.com/logo.jpg") String logoImageUrl, - - @Schema(description = "대학 배경 이미지 URL", example = "http://example.com/background.jpg") String backgroundImageUrl, - - @Schema(description = "현지에 대한 세부 사항", example = "Detailed information about local conditions.") String detailsForLocal, - - @Schema(description = "모집 인원", example = "2") int studentCapacity, - - @Schema(description = "등록금 유형", example = "본교납부형") String tuitionFeeType, - - @Schema(description = "파견 가능 학기", example = "1") String semesterAvailableForDispatch, - - @ArraySchema(arraySchema = @Schema(description = "어학 성적 요구사항")) List languageRequirements, - - @Schema(description = "어학 성적 세부 사항", example = "Minimum TOEFL score required is 80.") String detailsForLanguage, - - @Schema(description = "GPA", example = "3.5") String gpaRequirement, - - @Schema(description = "GPA 계산 기준", example = "4.0") String gpaRequirementCriteria, - - @Schema(description = "필요 학기", example = "2") String semesterRequirement, - - @Schema(description = "지원에 대한 세부 사항", example = "Application process detailed here.") String detailsForApply, - - @Schema(description = "전공에 대한 세부 사항", example = "Major requirements detailed here.") String detailsForMajor, - - @Schema(description = "숙박에 대한 세부 사항", example = "Accommodation details provided.") String detailsForAccommodation, - - @Schema(description = "영어 과정 세부 사항", example = "English courses available for international students.") String detailsForEnglishCourse, - - @Schema(description = "기타 세부 사항", example = "Additional university details.") String details, - - @Schema(description = "숙박 시설 URL", example = "http://example.com/accommodation") String accommodationUrl, - - @Schema(description = "영어 수업 정보 URL", example = "http://example.com/englishCourses") String englishCourseUrl) { public static UniversityDetailResponse of( diff --git a/src/main/java/com/example/solidconnection/university/dto/UniversityInfoForApplyPreviewResponse.java b/src/main/java/com/example/solidconnection/university/dto/UniversityInfoForApplyPreviewResponse.java index de0987eaf..93214b056 100644 --- a/src/main/java/com/example/solidconnection/university/dto/UniversityInfoForApplyPreviewResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/UniversityInfoForApplyPreviewResponse.java @@ -1,36 +1,18 @@ package com.example.solidconnection.university.dto; import com.example.solidconnection.university.domain.UniversityInfoForApply; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; import java.util.Collections; import java.util.List; -@Schema(description = "대학 미리보기 응답") public record UniversityInfoForApplyPreviewResponse( - @Schema(description = "대학 지원을 위한 정보 id", example = "1") long id, - - @Schema(description = "모집 시기", example = "2024-2") String term, - - @Schema(description = "국문 이름", example = "그라츠대학") String koreanName, - - @Schema(description = "지역", example = "유럽") String region, - - @Schema(description = "국가", example = "오스트리아") String country, - - @Schema(description = "대학 로고 이미지 URL", example = "http://example.com/logo.jpg") String logoImageUrl, - - @Schema(description = "모집 인원", example = "2") int studentCapacity, - - @ArraySchema(arraySchema = @Schema(description = "어학시험 요구사항")) List languageRequirements) { public static UniversityInfoForApplyPreviewResponse from(UniversityInfoForApply universityInfoForApply) { diff --git a/src/main/java/com/example/solidconnection/university/dto/UniversityRecommendsResponse.java b/src/main/java/com/example/solidconnection/university/dto/UniversityRecommendsResponse.java index 947a7e78c..057061f3e 100644 --- a/src/main/java/com/example/solidconnection/university/dto/UniversityRecommendsResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/UniversityRecommendsResponse.java @@ -1,12 +1,7 @@ package com.example.solidconnection.university.dto; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Schema; - import java.util.List; -@Schema(description = "추천 대학 목록 응답") public record UniversityRecommendsResponse( - @ArraySchema(arraySchema = @Schema(description = "추천된 대학 목록", implementation = UniversityInfoForApplyPreviewResponse.class)) List recommendedUniversities) { } From 6c63ba1e1e83d2679372edc510f702ec88dce759 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 10 Dec 2024 01:38:01 +0900 Subject: [PATCH 2/4] =?UTF-8?q?refactor:=20=EC=8A=A4=EC=9B=A8=EA=B1=B0=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 3799f64bc..5157e8f6c 100644 --- a/build.gradle +++ b/build.gradle @@ -36,8 +36,8 @@ dependencies {//todo: 안쓰는 의존성이나 deprecated된 의존성 제거 implementation 'com.amazonaws:aws-java-sdk-s3:1.12.470' implementation 'org.hibernate.validator:hibernate-validator:8.0.1.Final' implementation 'jakarta.annotation:jakarta.annotation-api:2.1.1' - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' - testImplementation "org.mockito:mockito-core:3.3.3" + implementation 'org.apache.commons:commons-lang3:3.12.0' + testImplementation 'org.mockito:mockito-core:3.3.3' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-registry-prometheus' From 7006f8b7278fc52a66dacd2df1ed5de67d41e839 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 10 Dec 2024 01:40:36 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=EC=8A=A4=EC=9B=A8=EA=B1=B0=20?= =?UTF-8?q?=EC=97=94=EB=93=9C=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/security/JwtAuthenticationFilter.java | 4 ---- .../config/security/SecurityConfiguration.java | 1 - 2 files changed, 5 deletions(-) diff --git a/src/main/java/com/example/solidconnection/config/security/JwtAuthenticationFilter.java b/src/main/java/com/example/solidconnection/config/security/JwtAuthenticationFilter.java index 6062c640e..a618bec04 100644 --- a/src/main/java/com/example/solidconnection/config/security/JwtAuthenticationFilter.java +++ b/src/main/java/com/example/solidconnection/config/security/JwtAuthenticationFilter.java @@ -108,10 +108,6 @@ private HashSet getPermitAllEndpoints() { // 대학교 정보 permitAllEndpoints.add("/university/search/**"); - // API 문서 - permitAllEndpoints.add("/swagger-ui/**"); - permitAllEndpoints.add("/v3/api-docs/**"); - return permitAllEndpoints; } } diff --git a/src/main/java/com/example/solidconnection/config/security/SecurityConfiguration.java b/src/main/java/com/example/solidconnection/config/security/SecurityConfiguration.java index 934eaf9f8..449bdd35c 100644 --- a/src/main/java/com/example/solidconnection/config/security/SecurityConfiguration.java +++ b/src/main/java/com/example/solidconnection/config/security/SecurityConfiguration.java @@ -51,7 +51,6 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { "/file/profile/pre", "/auth/kakao", "/auth/sign-up", "/auth/reissue", "/university/detail/**", "/university/search/**", "/university/recommends", - "/swagger-ui/**", "/v3/api-docs/**", "/actuator/**" ) .permitAll() From cb2e24a4fc94322f3dd27e5090d8b3f815bd9805 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Wed, 11 Dec 2024 18:05:24 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=BB=B4=ED=8C=8C=EC=9D=BC=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/solidconnection/e2e/SignUpTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/example/solidconnection/e2e/SignUpTest.java b/src/test/java/com/example/solidconnection/e2e/SignUpTest.java index 7472616f6..62fae2731 100644 --- a/src/test/java/com/example/solidconnection/e2e/SignUpTest.java +++ b/src/test/java/com/example/solidconnection/e2e/SignUpTest.java @@ -76,7 +76,7 @@ class SignUpTest extends BaseEndToEndTest { List interestedRegionNames = List.of("유럽"); List interestedCountryNames = List.of("프랑스", "독일"); SignUpRequest signUpRequest = new SignUpRequest(generatedKakaoToken, interestedRegionNames, interestedCountryNames, - PreparationStatus.CONSIDERING, "nickname", "profile", Gender.FEMALE, "2000-01-01"); + PreparationStatus.CONSIDERING, "nickname", Gender.FEMALE, "profile", "2000-01-01"); SignUpResponse response = RestAssured.given().log().all() .contentType(ContentType.JSON) .body(signUpRequest) @@ -127,7 +127,7 @@ class SignUpTest extends BaseEndToEndTest { // request - body 생성 및 요청 SignUpRequest signUpRequest = new SignUpRequest(generatedKakaoToken, null, null, - PreparationStatus.CONSIDERING, alreadyExistNickname, "profile", Gender.FEMALE, "2000-01-01"); + PreparationStatus.CONSIDERING, alreadyExistNickname, Gender.FEMALE, "profile", "2000-01-01"); ErrorResponse errorResponse = RestAssured.given().log().all() .contentType(ContentType.JSON) .body(signUpRequest) @@ -153,7 +153,7 @@ class SignUpTest extends BaseEndToEndTest { // request - body 생성 및 요청 SignUpRequest signUpRequest = new SignUpRequest(generatedKakaoToken, null, null, - PreparationStatus.CONSIDERING, "nickname0", "profile", Gender.FEMALE, "2000-01-01"); + PreparationStatus.CONSIDERING, "nickname0", Gender.FEMALE, "profile", "2000-01-01"); ErrorResponse errorResponse = RestAssured.given().log().all() .contentType(ContentType.JSON) .body(signUpRequest) @@ -169,8 +169,7 @@ class SignUpTest extends BaseEndToEndTest { @Test void 유효하지_않은_카카오_토큰으로_회원가입을_하면_예외를_응답한다() { SignUpRequest signUpRequest = new SignUpRequest("invalid", null, null, - PreparationStatus.CONSIDERING, "nickname", "profile", Gender.FEMALE, "2000-01-01"); - + PreparationStatus.CONSIDERING, "nickname", Gender.FEMALE, "profile", "2000-01-01"); ErrorResponse errorResponse = RestAssured.given().log().all() .contentType(ContentType.JSON) .body(signUpRequest)