今天會記錄實作刪除評論的 API 功能
/api/posts/{postid}/comments/{id}
會有兩層的篩選來鎖定要刪除的評論,第一是 post,再來才是 comment 的 id
需要兩個篩選的條件 post 以及 comment
在 CommentService.java
void deleteComment(long postId, long commentId);
在 CommentServiceImpl.java
在 Impl 中也要繼承到 Service 的新函數
@Override
public void deleteComment(Long postId, Long commentId){
Post post = postRepository.findById(postId).orElseThrow(
() -> new ResourceNotFoundExceptiom("Post","id",postId));
Comment comment = commentRepository.findById(commentId).orElseThrow(() ->
new ReaourceNotFoundException("Comment","id",commentId);
if(!comment.getPost().getId().equals(post.getId())){
throw new BlogAPIEXCEPTION(HttpStatus.BAD_REQUEST, "Comment does not belongs to post");"
}
commentRepository.delete(comment);
}
CommentController.java
@DeleteMapping("/posts/{postId}/comments/{id}")
public RepositoryEntity<String> deleteComment(
@PathVariable(value="postId") Long postId,
@PathVariable(value="id") Long commentId){
commentService.deleteComment(postId,commentId);
return new ResponseEntity<>("Comment delelted successfully", HttpStatus.OK);
}
同樣可以使用 Postman 來作測試,看是否能夠成功建立刪除的 API
在 URL 區塊中輸入http://localhost:8080/api/posts/1/comment/1
表示要刪除的是 postId 為 1,commentId 為 1
使用 DELETE 這個功能
按下 Send
就可以去資料庫查看是否刪除了這個資料
今天的實作紀錄就到這裡~
明天見~