[7주차/주니] 워크북 제출합니다#35
Conversation
YoungJJun
left a comment
There was a problem hiding this comment.
7주차 피드백
-
우선
@Operation통해서 Swagger 설명 달아주신 점 좋습니다. -
(미션) 내가 진행중인 미션 조회하기 → 오프셋 기반 페이지네이션, RequestBody로 사용자 ID받기 미션 제약사항이 있었어요.
우선 ID를 Body가 아닌
@PathVariable로 받고 있습니다. 미션 요구사항에서 RequestBody를 요구하고 있지만 이미 프로젝트 한 번 해보셨고@PathVariable과@RequestBody차이점을 알고 있는 상황에서 결국 나중에 토큰으로 바꿀 내용을 시간들여 수정할 필요는 없다고 생각합니다.
(선택사항으로 수정하셔도 문제는 없습니다.)page 값에 대해서 Default는 설정되어 있는데
@Min(0)같은 annotation 사용해서 음수값에 대해서 예외처리 할 수 있을 것 같아요. -
(미션) 내가 생성한 리뷰들 조회하기 → 커서기반, 사진제외, ID/별점순 구현
ReviewQueryService에서 MissionConverter가 사용되고 있어요. 도메인별로 나눠서 설계한걸 고려하면 의존성이 잘 못 설정되었다고 볼 수 있을 것 같아요.
ReviewConverter에 동일한 메서드 추가하거나 Converter 자체가 페이징과 관련되어 있다면 global하게 쓰일 것 같으니 page관련 패키지를 따로 두는것도 좋아보입니다.
-
검증 Annotation은 모두 잘 적용된 것 같고 GeneralExceptionAdvice에서 또한 잘 잡아주고 있는 것 같습니다.
-
src/main/java/umc/domain/mission/service/MissionQueryService.java
if(!cursor.equals("-1")) { String[] cursorSplit = cursor.split(":"); switch(query.toLowerCase()) { case "id": Long prevCursor = Long.parseLong(cursorSplit[0]); idCursor = Long.parseLong(cursorSplit[1]); missionList = missionRepository.findMissionsByStore_IdAndIdLessThanOrderByIdDesc( storeId, idCursor, pageRequest ); break; default: throw new MissionException(MissionErrorCode.MISSION_NOT_FOUND); } } missionList = missionRepository.findMissionsByStore_IdOrderByIdDesc(storeId, pageRequest);
구조상 if문을 타는 경우에 missionList에 들어가는 값과, 타지 않을 때 missionList에 들어가는 값이 달라보여요. 할당되는 함수부터가 다르니까요.
그런데 실제로는 if else 구조가 아니라 if문에서 missionList 에 값을 할당해도 무조건 아래에서
missionList = missionRepository.findMissionsByStore_IdOrderByIdDesc(storeId, pageRequest);가 수행되는 구조같습니다. 확인 부탁드려용.(제가 깃허브에서 직접 보느라 들여쓰기 착각했을수도 있을 것 같아요..)
주니 7주차 수고하셨습니다. 스웨거 캡쳐 미션은 진행하시게 되면 노션 미션기록이나 10thSpring 키워드 업로드시 mission.md에 첨부해주세요~
|
@YoungJJun 바쁠실텐데 완죤 빠른 코드리뷰 감사드립니다앙⭐️ |
|
페이징 관련 ResponseDTO 추가 좋네요!! |
|
|
||
| // 마이페이지 | ||
| @GetMapping("/{memberId}/mypage") | ||
| @Operation(summary = "마이페이지 조회") |
| public ApiResponse<CursorResponseDTO<ReviewResDTO.ReviewPreviewDTO>> getMyReviews( | ||
| @PathVariable(name = "memberId") Long memberId, | ||
| @RequestParam(name = "cursor", defaultValue = "-1") String cursor, | ||
| @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, |
| public static class ReviewCreateDTO { | ||
| @NotBlank(message = "리뷰 내용은 필수 입력 항목입니다.") | ||
| String reviewContent; | ||
| @NotNull(message = "별점은 필수 입력 항목입니다.") @Min(value = 1) @Max(5) |
| this.hasNext = slice.hasNext(); | ||
| } | ||
|
|
||
| /** |
✅ 실습 체크리스트
✅ 컨벤션 체크리스트
📌 주안점