1. 서비스
// id 로 댓글 삭제
void deleteCommentById(Long postId, Long commentId);
2. 서비스 구현
@Override
public void deleteCommentById(Long postId, Long commentId) {
//ID 로 포스트 찾기 못찾을 경우 예외처리
Post post = postRepository.findById(postId).orElseThrow(() -> new ResourceNotFoundException("Post", "id", postId));
//ID 로 댓글 찾기 못찾을 경우 예외
Comment comment = commentRepository.findById(commentId).orElseThrow(() -> new ResourceNotFoundException("Comment", "id", commentId));
if(!comment.getPost().getId().equals(post.getId())) {
throw new BlogAPIException(HttpStatus.BAD_REQUEST, "해당 포스트의 댓글이 아닙니다.");
}
commentRepository.delete(comment);
}
컨트롤러
@DeleteMapping("/posts/{postId}/comments/{commentId}")
public ResponseEntity<String> deleteCommentById(@PathVariable long postId, @PathVariable long commentId){
commentService.deleteCommentById(postId, commentId);
return new ResponseEntity<>("성공적으로 삭제 완료.", HttpStatus.OK) ;
}
테스트