Skip to content

Conversation

@Jjiggu
Copy link
Contributor

@Jjiggu Jjiggu commented Dec 21, 2025

작업 요약

  • API 경로명 일관화 작업 수행

Issue Link

#338

문제점 및 어려움

해결 방안

Reference

Summary by CodeRabbit

  • Refactor
    • 다수의 공개 REST 경로가 v1 기준의 계층적 구조로 재정렬되었습니다(북마크, 메뉴, 주문, 예약, 가게, 결제, 인증/토큰, 사용자).
    • 일부 엔드포인트 경로 및 호출 방식이 간소화되어 경로 매개변수 구조가 변경되었습니다.
  • Chores
    • 결제 조회의 응답 시 204 No Content 처리 추가 및 일부 인증/OAuth 경로가 새 위치로 이동했습니다.
  • 영향
    • API 경로와 응답 동작이 변경되어 클라이언트는 요청 경로와 응답 처리 로직을 업데이트해야 합니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@Jjiggu Jjiggu self-assigned this Dec 21, 2025
@Jjiggu Jjiggu added the refactor 리팩토링 label Dec 21, 2025
@coderabbitai
Copy link

coderabbitai bot commented Dec 21, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

여러 컨트롤러의 클래스·메서드 레벨 RequestMapping 경로를 일관된 버전화된 API 구조(예: /v1/users/me/bookmarks, /v1/stores/{publicCode}/menus)로 재배치하고 일부 엔드포인트 경로·메서드명·파라미터명을 정리했습니다. 대부분 메서드 시그니처와 내부 로직은 유지됩니다.

Changes

Cohort / File(s) Summary
사용자 인증·프로필 관련
nowait-app-user-api/src/main/java/com/nowait/applicationuser/bookmark/controller/BookmarkController.java, nowait-app-user-api/src/main/java/com/nowait/applicationuser/user/controller/UserController.java, nowait-app-user-api/src/main/java/com/nowait/applicationuser/token/controller/TokenController.java, nowait-app-user-api/src/main/java/com/nowait/applicationuser/oauth/controller/KakaoAppAuthController.java
클래스 레벨 @RequestMapping 경로 업데이트: 북마크와 사용자 엔드포인트를 /v1/users/me 계층으로 이동, 토큰 리프레시를 /v1/auth/token/refresh로 변경, 카카오 앱 OAuth를 /v1/auth/app/kakao로 변경. UserController의 putOptional 파라미터명 reqrequest로 변경 및 매핑 경로 /optional-info/optional.
스토어·메뉴·결제 관련
nowait-app-user-api/src/main/java/com/nowait/applicationuser/menu/controller/MenuController.java, nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/controller/StoreController.java, nowait-app-user-api/src/main/java/com/nowait/applicationuser/storepayment/controller/StorePaymentController.java
MenuController 클래스 경로를 /v1/stores/{publicCode}/menus로 이동하고 메서드 매핑 단순화. StoreController는 클래스 경로 표기 정리(leading slash), 메서드명 오타 수정 및 엔드포인트 경로 변경(/all-stores → root, /waiting-list/waiting-count). StorePaymentController는 경로를 /v1/stores/{publicCode}/payments로 변경하고 Optional 처리로 응답(200 payload 또는 204 No Content) 반환, 204 ApiResponse 추가.
주문·예약 관련
nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java, nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/controller/ReservationController.java
OrderController 클래스 경로를 /v1/stores/{publicCode}/tables/{tableId}/orders로 이동하고 메서드 레벨 하위 경로 제거; create/get 메서드에 publicCode/tableId PathVariable 추가 및 세션 처리 일부 변경. ReservationController는 클래스 경로를 /v1/users/me/waitings로 변경하고 여러 엔드포인트 경로 재구성(예: /create/{storeId}/legacy/{storeId}, Redis 관련 엔드포인트를 /{storeId}로 통합), 일부 메서드에 @Operation 메타데이터 추가 및 TODO 주석 삽입.
보안 구성 업데이트
nowait-app-user-api/src/main/java/com/nowait/applicationuser/config/security/SecurityConfig.java
변경된 엔드포인트 구조에 맞춰 permit 대상 URL 목록(requestMatchers)을 갱신하여 새 경로들(/v1/auth/**, /v1/stores/{publicCode}/... 등)을 반영. 보안 필터·정책 설정 자체는 변경 없음.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • ReservationController: 엔드포인트 재배치 및 @Operation 추가로 API 의도·동작 검증 필요
  • 경로 일관성: 여러 컨트롤러에 걸친 publicCode/스토어 계층 적용이 의도대로 연결되었는지 확인 필요
  • StorePaymentController: Optional → 204 응답 변경이 클라이언트 영향 유발하는지 확인
  • UserController: 파라미터명 변경이 호출부(서비스/테스트)에 반영되었는지 확인

Possibly related PRs

Suggested reviewers

  • HyemIin

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 26.67% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 변경 사항의 핵심과 정확히 일치합니다. 'API 경로명 일관화 작업 수행'은 모든 컨트롤러의 API 경로를 일관된 형식으로 재정의한 주요 변경 사항을 명확하게 요약합니다.

📜 Recent review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8078364 and 54ced6d.

📒 Files selected for processing (1)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java (2 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot requested a review from HyemIin December 21, 2025 13:27
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/controller/StoreController.java (1)

36-41: 메서드명 불일치로 인한 컴파일 오류 발생

컨트롤러 메서드명은 getAllStoresByPageAndDepartments로 변경되었지만(Line 36), 서비스 호출은 여전히 이전 오타가 있는 메서드명 getAllStoresByPageAndDeparments를 사용하고 있습니다(Line 41). 이는 컴파일 오류를 발생시킵니다.

🔎 수정 제안
 public ResponseEntity<?> getAllStoresByPageAndDepartments(Pageable pageable, @AuthenticationPrincipal CustomOAuth2User customOAuth2User) {
   return ResponseEntity
     .ok()
     .body(
       ApiUtils.success(
-        storeService.getAllStoresByPageAndDeparments(pageable, customOAuth2User)
+        storeService.getAllStoresByPageAndDepartments(pageable, customOAuth2User)
       )
     );
 }
🧹 Nitpick comments (1)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java (1)

35-51: 주석 처리된 코드 제거 권장

더 이상 사용되지 않는 주석 처리된 코드는 삭제하는 것이 좋습니다. 필요시 Git 히스토리를 통해 언제든지 확인할 수 있습니다.

🔎 제안하는 수정사항
-	// @PostMapping("/create/{storeId}/{tableId}")
-	// @Operation(summary = "주문 생성", description = "특정 주점 - 특정 테이블에 대한 주문 생성")
-	// @ApiResponse(responseCode = "201", description = "주문 생성")
-	// public ResponseEntity<?> createOrder(
-	// 	@PathVariable Long storeId,
-	// 	@PathVariable Long tableId,
-	// 	@RequestBody @Valid OrderCreateRequestDto orderCreateRequestDto,
-	// 	HttpSession session
-	// ) {
-	// 	String sessionId = session.getId();
-	// 	OrderCreateResponseDto response = orderService.createOrder(storeId, tableId, orderCreateRequestDto, sessionId);
-	// 	return ResponseEntity
-	// 		.status(HttpStatus.CREATED)
-	// 		.body(
-	// 			ApiUtils.success(response)
-	// 		);
-	// }
-
 	@PostMapping
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a1f2c7a and 9bf5a45.

📒 Files selected for processing (9)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/bookmark/controller/BookmarkController.java (1 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/menu/controller/MenuController.java (2 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/oauth/controller/KakaoAppAuthController.java (1 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java (3 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/controller/ReservationController.java (5 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/controller/StoreController.java (2 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/storepayment/controller/StorePaymentController.java (1 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/token/controller/TokenController.java (1 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/user/controller/UserController.java (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/storepayment/controller/StorePaymentController.java (2)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/controller/StoreController.java (1)
  • Tag (23-87)
nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/storePayment/controller/StorePaymentController.java (1)
  • Tag (31-92)
🔇 Additional comments (10)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/controller/ReservationController.java (5)

31-31: LGTM!

버전화된 API 경로(/v1/users/me/waitings)가 RESTful 컨벤션과 PR의 일관성 목표에 잘 부합합니다.


37-39: LGTM!

레거시 엔드포인트를 성능 비교 목적으로 유지하면서 /legacy/ 접두사로 명확하게 구분하고, 주석과 @Operation 어노테이션으로 목적을 잘 문서화했습니다.


54-54: LGTM!

대기열 등록 엔드포인트가 간결하고 RESTful한 경로로 잘 정리되었습니다.


72-72: LGTM!

대기열 조회 엔드포인트가 RESTful 패턴에 맞게 잘 정리되었습니다.


106-106: LGTM!

기본 경로에서 전체 대기열 목록을 조회하는 방식이 RESTful 패턴에 잘 부합합니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/controller/StoreController.java (2)

25-25: 경로 수정 확인

클래스 레벨 매핑에 선행 슬래시가 추가되어 올바른 경로 형식이 되었습니다.


72-72: 엔드포인트 경로 변경 완료 확인됨

/waiting-count 엔드포인트가 StoreController.java 72번 줄에 올바르게 정의되어 있으며, 전체 코드베이스에서 이전 /waiting-list 경로에 대한 참조가 없습니다. 엔드포인트 변경이 성공적으로 완료되었습니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/storepayment/controller/StorePaymentController.java (1)

31-47: 응답 처리 개선 확인

결제 정보가 없을 때 204 No Content를 반환하도록 개선되었습니다. 이는 RESTful API 설계 원칙에 부합하는 좋은 변경입니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/user/controller/UserController.java (2)

28-31: 파라미터 네이밍 개선

파라미터명이 req에서 request로 변경되어 가독성이 향상되었습니다.


19-19: 사용자 중심 API 구조로 개선됨

기본 경로가 /v1/users/me로 변경되어 사용자별 리소스를 명확하게 표현합니다. 엔드포인트는 /v1/users/me/optional이 됩니다. 이는 BookmarkController(/v1/users/me/bookmarks), ReservationController(/v1/users/me/waitings) 등 다른 사용자 관련 컨트롤러와 일관된 패턴입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants