새 댓글 만들기 POST

jb kim·2022년 3월 4일
0

REST API 블로그 앱

목록 보기
28/65

1. 서비스

public interface CommentService {
	// 새 댓글 생성
	CommentDto createComment(Long postId, CommentDto commentDto);
}

2. 서비스impl (인터페이스 구현)

@Service
public class CommentServiceImpl implements CommentService{
	
	private CommentRepository commentRepository;
	private PostRepository postRepository;
	
	
	public CommentServiceImpl(CommentRepository commentRepository, PostRepository postRepository) {
		this.commentRepository = commentRepository;
		this.postRepository = postRepository;
	}

	@Override
	public CommentDto createComment(Long postId, CommentDto commentDto) {
		
		Comment comment = mapToEntity(commentDto);
		//ID 로 포스트 찾기 못찾을 경우 예외처리
		Post post = postRepository.findById(postId).orElseThrow(() -> new ResourceNotFoundException("Post", "id", postId));
		
		comment.setPost(post);
		
		Comment newComment = commentRepository.save(comment);
		
		return mapToDTO(newComment);
	}

	//Entity -> DTO
	private CommentDto mapToDTO(Comment comment) {		
		CommentDto commentDto = new CommentDto();
		commentDto.setId(comment.getId());
		?
		return commentDto;
	}
	
	//DTO -> Entity (아이디는 자동생성 됨)
	private Comment mapToEntity(CommentDto commentDto) {
		Comment comment = new Comment();
		comment.setName(commentDto.getName());
		?		
		return comment;
	}
}

3. 컨트롤러

	@PostMapping("/posts/{postId}/comments")
	public ResponseEntity<CommentDto> createComment(@PathVariable Long postId, @RequestBody CommentDto commentDto ){		
		return new ResponseEntity<>(commentService.createComment(postId, commentDto), HttpStatus.CREATED) ;
	}

profile
픽서

0개의 댓글