diff --git a/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryApi.java b/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryApi.java index 538e9dc5..45c0d950 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryApi.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryApi.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.sopt.snappinserver.api.v1.category.dto.response.CategoriesResponse; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; +import org.springframework.web.bind.annotation.GetMapping; @Tag(name = "02 - Category", description = "촬영 상황 관련 API") public interface CategoryApi { @@ -12,5 +13,6 @@ public interface CategoryApi { summary = "촬영 상황 조회", description = "촬영 상황 옵션으로 사용될 스냅 유형 전체 목록을 조회합니다." ) + @GetMapping ApiResponseBody getCategories(); } diff --git a/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryController.java b/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryController.java index ddcea32c..1b45a333 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryController.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/category/controller/CategoryController.java @@ -8,7 +8,6 @@ import org.sopt.snappinserver.api.v1.category.dto.response.CategoryResponse; import org.sopt.snappinserver.global.enums.SnapCategory; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,7 +17,6 @@ public class CategoryController implements CategoryApi { @Override - @GetMapping public ApiResponseBody getCategories() { List categories = Arrays.stream(SnapCategory.values()) diff --git a/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioApi.java b/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioApi.java index 7c3a8942..a11db51f 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioApi.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioApi.java @@ -12,6 +12,7 @@ import org.sopt.snappinserver.api.v1.portfolio.dto.response.GetPortfolioMetaResponse; import org.sopt.snappinserver.domain.auth.infra.jwt.CustomUserInfo; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; @@ -22,12 +23,14 @@ public interface PortfolioApi { summary = "비로그인 시 인기 무드 기반 포폴 추천 목록 조회 API", description = "비로그인 시 인기 무드와 많이 매칭되는 순서대로 속한 포트폴리오를 3개 조회합니다." ) + @GetMapping("/popular") ApiResponseBody getPopularPortfolios(); @Operation( summary = "포트폴리오 상세 조회 API", description = "포트폴리오 ID를 받아서 포트폴리오 상세 정보를 조회합니다." ) + @GetMapping("/{portfolioId}") ApiResponseBody getPortfolioDetail( @Parameter(hidden = true) CustomUserInfo userInfo, @@ -39,6 +42,7 @@ ApiResponseBody getPortfolioDetail( summary = "로그인 시 큐레이션 기반 포폴 추천 목록 조회", description = "큐레이션 기반 포트폴리오 추천 목록을 조회합니다." ) + @GetMapping("/recommendation") ApiResponseBody getCuratedPortfolios( @Parameter(hidden = true) CustomUserInfo userInfo @@ -48,6 +52,7 @@ ApiResponseBody getCuratedPortfolios( summary = "포폴 목록 조회 (전체조회/필터링(무드&상품)/검색) API", description = "포트폴리오 전체 조회, 필터링, 검색 시 사용되는 API 입니다." ) + @GetMapping ApiResponseBody getPortfolioList( @Valid @ModelAttribute GetPortfolioListRequest request ); diff --git a/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioController.java b/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioController.java index 65f4e8f5..2e92fbad 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioController.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/portfolio/controller/PortfolioController.java @@ -22,9 +22,6 @@ import org.sopt.snappinserver.domain.portfolio.service.usecase.GetPortfolioListUseCase; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -39,7 +36,6 @@ public class PortfolioController implements PortfolioApi { private final GetPortfolioListUseCase getPortfolioListUseCase; @Override - @GetMapping("/popular") public ApiResponseBody getPopularPortfolios() { GetPopularPortfolioListResult result = getPopularPortfolioListUseCase .getPopularPortfolioList(); @@ -49,10 +45,9 @@ public ApiResponseBody getPopularPortfoli } @Override - @GetMapping("/{portfolioId}") public ApiResponseBody getPortfolioDetail( @AuthenticationPrincipal CustomUserInfo userInfo, - @PathVariable Long portfolioId + Long portfolioId ) { Long userId = (userInfo != null) ? userInfo.userId() : null; GetPortfolioDetailResult result = getPortfolioDetailUseCase.findPortfolioDetail( @@ -65,7 +60,6 @@ public ApiResponseBody getPortfolioDetail( } @Override - @GetMapping("/recommendation") public ApiResponseBody getCuratedPortfolios( @AuthenticationPrincipal CustomUserInfo userInfo ) { @@ -78,9 +72,8 @@ public ApiResponseBody getCuratedPortfolios( } @Override - @GetMapping public ApiResponseBody getPortfolioList( - @ModelAttribute GetPortfolioListRequest request + GetPortfolioListRequest request ) { GetPortfolioListQuery query = getQuery(request); GetPortfolioListResult result = getPortfolioListUseCase.getPortfolioList(query); diff --git a/src/main/java/org/sopt/snappinserver/api/v1/product/controller/ProductController.java b/src/main/java/org/sopt/snappinserver/api/v1/product/controller/ProductController.java index b4e0ef6c..702f87cb 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/product/controller/ProductController.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/product/controller/ProductController.java @@ -37,7 +37,6 @@ import org.sopt.snappinserver.global.response.dto.ApiResponseBody; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -167,7 +166,7 @@ public ApiResponseBody getProductDetail( @Override public ApiResponseBody getProductList( - @ModelAttribute GetProductListQuery query + GetProductListQuery query ) { GetProductListResult result = getProductListUseCase.getProductList(query); GetProductListResponse response = GetProductListResponse.from(result); diff --git a/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewApi.java b/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewApi.java index 1fe66518..7f555dd1 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewApi.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewApi.java @@ -2,7 +2,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; @@ -13,6 +12,7 @@ import org.sopt.snappinserver.global.response.dto.ApiResponseBody; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @Tag(name = "011 - Review", description = "리뷰 관련 API") @@ -22,6 +22,7 @@ public interface ReviewApi { summary = "리뷰 사진 url 발급 API", description = "리뷰에 업로드하는 사진을 저장할 S3 Presigned URL을 생성하여 반환합니다." ) + @PostMapping("/image") ApiResponseBody postPresignedUrl( @Parameter(hidden = true) CustomUserInfo userInfo, @@ -35,7 +36,7 @@ ApiResponseBody postPresignedUrl( ) @GetMapping("/{reviewId}") ApiResponseBody getReviewDetail( - @Schema(description = "리뷰 ID") + @Parameter(description = "리뷰 ID") @PathVariable @NotNull Long reviewId ); } diff --git a/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewController.java b/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewController.java index c7a4730a..76babb59 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewController.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/review/controller/ReviewController.java @@ -2,7 +2,6 @@ import static org.sopt.snappinserver.global.response.code.review.ReviewSuccessCode.POST_PRESIGNED_URL_OK; -import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.sopt.snappinserver.global.response.code.review.ReviewSuccessCode; import org.sopt.snappinserver.api.v1.review.dto.request.PostPresignedUrlRequest; @@ -16,8 +15,6 @@ import org.sopt.snappinserver.domain.review.service.usecase.PostPresignedUrlUseCase; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; import org.springframework.security.core.annotation.AuthenticationPrincipal; -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; @@ -30,10 +27,9 @@ public class ReviewController implements ReviewApi { private final GetReviewDetailUseCase getReviewDetailUseCase; @Override - @PostMapping("/image") public ApiResponseBody postPresignedUrl( @AuthenticationPrincipal CustomUserInfo userInfo, - @Valid @RequestBody PostPresignedUrlRequest request + PostPresignedUrlRequest request ) { PostPresignedUrlCommand command = getPostPresignedUrlCommand(userInfo, request); PostPresignedUrlResult result = postPresignedUrlUseCase.getPresignedUrlForUpload(command); diff --git a/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishApi.java b/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishApi.java index ec454d08..47510735 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishApi.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishApi.java @@ -12,13 +12,11 @@ import org.sopt.snappinserver.api.v1.wish.dto.response.WishedProductsResponse; import org.sopt.snappinserver.domain.auth.infra.jwt.CustomUserInfo; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @Tag(name = "012 - Wish", description = "좋아요 관련 API") -@Validated public interface WishApi { @Operation( diff --git a/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishController.java b/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishController.java index b209776a..cb948a62 100644 --- a/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishController.java +++ b/src/main/java/org/sopt/snappinserver/api/v1/wish/controller/WishController.java @@ -19,12 +19,14 @@ import org.sopt.snappinserver.domain.wish.service.usecase.PostWishProductUseCase; import org.sopt.snappinserver.global.response.dto.ApiResponseBody; import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/v1/wishes") @RequiredArgsConstructor @RestController +@Validated public class WishController implements WishApi { private final PostWishPortfolioUseCase postWishPortfolioUseCase;