[7주차/미키] 워크북 제출합니다#36
Conversation
There was a problem hiding this comment.
7주차 피드백
-
(미션) 내가 진행중인 미션 조회하기 관련해서
@RequestBody를 요구하고 있고 구현은@RequestParam으로 되어있습니다.토큰 적용시 두 방법 모두 사용하지 않게 될 것 같아서 필수 수정할 필요는 없어보이나 프로젝트 개발이 처음이시니 Body로 변경하는거 연습겸 진행하는것도 좋을 것 같습니다.
Body로 수정하기 위해서 코드에서 어떤 부분을 수정해야하고 왜 그래야 하는지 생각해보는 정도까지만 공부하셔도
@RequestBody,@RequestParam차이와 사용하는 상황을 확실히 공부하고 넘어가실 수 있을 것 같아요. -
MissionQueryService에서 인자로 PageNumber를 전달받는 경우에
@Min,@Max등 어노테이션 사용해서 validation 체크 해주시면 좋을 것 같아요. -
ReviewQueryService
reviewRepository.findReviewsByMemberIdAndIdLessThanOrderByIdDesc( memberId, idCursor, pageRequest ); break;
위 코드가 있는데 reviewRepository는 분명 어떤 결과를 return 할 것 같은데 호출만하고 결과를 안받고 있는 것 같아요.
-
src/main/java/umc/domain/review/dto/ReviewReqDTO.java
ReviewDTO에 String text가 not null로 설정되어 있습니다.
@NotNull(message = "리뷰는 빈칸일 수 없습니다.") String text
NotNull은 말그대로 null만 아니면 되기 때문에 빈 문자열을 넣을 수 있습니다! 메시지대로 리뷰에 빈 메시지를 넣지 못하게 하고싶으시면
@NotBlank를 사용할 수 있습니다. -
JPQL 관련 메서드 파라미터에
@Param누락@Query("SELECT r FROM Review r WHERE r.member.id = :memberId " + "AND (r.score < :scoreCursor OR (r.score = :scoreCursor AND r.id < :idCursor)) " + "ORDER BY r.score DESC, r.id DESC") Slice<Review> findReviewsByScoreCursor(Long memberId, Float scoreCursor, long idCursor, PageRequest pageRequest);
Query를 보시면 memberId, scoreCursor, idCursor등 값을 필요로합니다. 그런데 메서드 인자에 보면
@Param이 없어서 에러가 날 가능성이 있을 것 같아요. 스프링에서 자동으로 매핑해주면 문제 없을 것 같지만 혹시 모르는 상황을 대비해 수정하면 좋을 것 같아요.여기서 에러가 발생할 수 있다는건 컴파일러 옵션 중 -parameters 옵션이 켜져있으면 문제가 없고 꺼져있으면 매핑이 안된다고 합니다.
SpringBoot 플러그인으로 빌드시 자동적용된다고 하지만 IDE 직접 실행시 런타임 에러 발생할 수 있어서 방어적으로 코딩하면 좋을 것 같습니다.Slice<Review> findReviewsByScoreCursor( @Param("memberId") Long memberId, @Param("scoreCursor") Float scoreCursor, @Param("idCursor") long idCursor, PageRequest pageRequest );
이런식으로
@Param추가할 수 있습니다.
미키 이번주도 수고하셨습니다~ 스웨거 미션은 지난주처럼 10th Spring 레포 mission 폴더에서 mission.md에 추가해주세요!
| throw new ReviewException(ReviewErrorCode.REVIEW_NOT_FOUND); | ||
| } | ||
|
|
||
| }else{//커서 없을 때 첫 페이지 조회 |
There was a problem hiding this comment.
넘어가는 페이지 없을 때, 첫 페이지 조회 로직까지 구현해주신 점 좋은 것 같아요!
| Long memberId, | ||
| @NotNull(message = "리뷰 평점은 필수입니다.") | ||
| Float score, | ||
| @NotNull(message = "리뷰는 빈칸일 수 없습니다.") |
✅ 실습 체크리스트
✅ 컨벤션 체크리스트
📌 주안점