limseulki / hanghaeblog

0 stars 2 forks source link

Hanghaeblog lv4, lv5 피드백 #8

Open limseulki opened 1 year ago

limseulki commented 1 year ago

현재까지 commit된 내용들은 lv4, 5에 기능을 조금 추가하고, 메소드 분리를 한 것인데, 전체적인 코드 리뷰를 받아보고 싶습니다.

추가된 기능은 아래와 같습니다.

구두로 피드백주신 내용 중, 공통 응답 부분과 유효성 검증 서비스단으로 옮겨보는 것은 추가로 해보려고 합니다. 페이징/정렬은 페어로 구현했고, 제 코드에도 추가 반영 예정입니다.

paran22 commented 1 year ago
paran22 commented 1 year ago
        if (like == null) {
            likeRepository.save(new Like(user, post, null));
            post.like();
            return new Message("게시글 좋아요 성공", 200);
        } else { // 좋아요 있으면 DB에서 제거
            likeRepository.deleteById(like.getId());
            post.unlike();
            return new Message("게시글 좋아요 취소 성공", 200);
        }

좋아요와 좋아요 삭제가 모두 동일한 api로 구현이 되어 있는데, HttpMethod를 고려하면 POST와 DELETE는 분명히 다른 것 같아요.


좋아요의 url이 @RequestMapping("/api/like") + @PostMapping("/post/{postId}") 인데, restApi 설계규칙의 계층관계와 연관관계를 고려해서 수정해보세요. 관련해서 LikeController, LikeService도 함께 생각해보면 좋을 것 같네요!


@PutMapping("/post/{id}") restApi 설계규칙의 단/복수에 대해서도 찾아보세요!


    private List<CommentResponseDto> getCommentList(Long postId) {
        // 게시글에 달린 댓글 찾아서 작성일 기준 내림차순 정렬
        List<Comment> commentList = commentRepository.findAllByPostIdOrderByCreatedAtDesc(postId);
        List<CommentResponseDto> commentResponseDtoList = new ArrayList<>();
        for(Comment comment : commentList) {
            commentResponseDtoList.add(new CommentResponseDto(comment));
        }
        return commentResponseDtoList;
    }

전체적으로 양방향으로 맵핑되어있는데 Service 로직들은 사실상 양방향 맵핑을 사용하고 있지 않은 것 같아요. 양방향으로 맵핑하신 이유가 있는지 궁금합니다!