ID로 댓글 하나 찾기

jb kim·2022년 3월 4일
0

REST API 블로그 앱

목록 보기
30/65

서비스

	// id 로 댓글 찾기
	CommentDto getCommentById(Long postId, Long commentId);

서비스 구현

	@Override
	public CommentDto getCommentById(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, "해당 포스트의 댓글이 아닙니다.");
		}
		return mapToDTO(comment);
	}

postId 와 comments의 postId 맞지 않음 커스텀 예외 만들기 ( exception )

public class BlogAPIException extends RuntimeException {
	private static final long serialVersionUID = 1L;

	private HttpStatus status;
	private String message;
	
	public BlogAPIException(HttpStatus status, String message) {
		this.status = status;
		this.message = message;
	}
	
	public BlogAPIException(String message, HttpStatus status, String message1) {
		super(message);
		this.status = status;
		this.message = message1;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public HttpStatus getStatus() {
		return status;
	}

	public String getMessage() {
		return message;
	}	
}

컨트롤러

	@GetMapping("/posts/{postId}/comments/{commentId}")
	public ResponseEntity<CommentDto> getCommentById(@PathVariable long postId, @PathVariable long commentId){		
		return new ResponseEntity<>(commentService.getCommentById(postId, commentId), HttpStatus.OK) ;
	}

postId 3 에 댓글을 만들자

profile
픽서

0개의 댓글