iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
SideProject30

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

Day 18 Java Spring API 實作 - Comment 評論功能 更新

  • 分享至 

  • xImage
  •  

概述

今天將會實作 Comment 更新資料的 function API,

Service

CommentService.java 中加上 updateComment 的 method

public interface CommentService {

	CommentDto createComment(long postId, CommentDto commentDto);

	List<CommentDto> getCommentsByPostId(long postId);
	
	CommentDto getCommentById(long postId, long commentId);
	
	CommentDto updateComment(long postId, long commentId, CommentDto commentRequest);

}

會要等 loader 的來能處理

CommentServiceImpl.java 中建立使用實例

@Override 
public CommentDto updateComment(long postId, long commentId, CommentDto commentRequest){
	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");"
}

comment.setName(commentRequest.getName());
comment.setEmail(commentRequest.getEmail());
comment.setBody(commentRequest.getBody());

Comment updateComment = commentRepository.save(comment);
return mapToDTO(updateComment);

}

Controller

CommentController.java

@PutMapping("/posts/{postId}/comments/{id}")
public RepositoryEntity<CommentDto> updateComment(@ParthVariable(value="postId" long postId,
@RequestBody CommentDto commentDto){

return new ResponseEntity<>(commentService.createComment(postId,commentDto), HttpStatus.CREATED);

API 測試

一樣在 Postman 中,這次是作 http”//localhost:8080/api/posts/1/comments/1

貼上原本有使用的 JSON 內容,之後改動內容,則需要轉換成 PUT


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

尚未有邦友留言

立即登入留言