iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
SideProject30

Java Spring + Vue 甘苦學習路 前後端分離之 Blog 實戰系列 第 19

Day19 Java Spring API 實作 - Comment 評論 刪除功能

  • 分享至 

  • xImage
  •  

概述

今天會記錄實作刪除評論的 API 功能

/api/posts/{postid}/comments/{id}

會有兩層的篩選來鎖定要刪除的評論,第一是 post,再來才是 comment 的 id

Service

需要兩個篩選的條件 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);
}

Controller

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);

}

API 測試

同樣可以使用 Postman 來作測試,看是否能夠成功建立刪除的 API

  1. 在 URL 區塊中輸入http://localhost:8080/api/posts/1/comment/1

    表示要刪除的是 postId 為 1,commentId 為 1

  2. 使用 DELETE 這個功能

  3. 按下 Send

就可以去資料庫查看是否刪除了這個資料

今天的實作紀錄就到這裡~

明天見~


上一篇
Day 18 Java Spring API 實作 - Comment 評論功能 更新
下一篇
Day20 Java Spring API 實作 - Exception 處理 Part1
系列文
Java Spring + Vue 甘苦學習路 前後端分離之 Blog 實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言