iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
SideProject30

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

Day 16 Java Spring API 實作 - Comment 評論功能 Part2

  • 分享至 

  • xImage
  •  

概述

今天將實作 Comment API 的建立細節,建立的方式跟 Post 一樣,同樣需要 Service, Controller, Entity 之間的串接。

payload

在 payload package 建立 CommentDto.java

跟 Postman client 間進行交流,定義所有的欄位內容


@Data
public class CommentDto {
		private long id;
		private String name;
		private String email;
		private String body;
		
}

可以在 entity package 中 Comment.java

Comment 的 API 跟 Post API 的處理很相像,都有 GET, POST, PUT, DELETE,而 Status code 則可以分為 200 (ok),

201 (created)

Service

在 Service package 中建立 CommentService.java 的 interface

在 Service impl 中建立 CommentServiceImpl.java 的 class,用來 implement CommentService

Service 的 class 同樣需要 mapToEntity 等功能

 
@Override
public class CommentServiceImpl implements CommentService {

private CommentRepository commentRespository;
private PostRepository postRepository;
public CommentServiceImpl (CommentRepository commentRepository){
			this.commentRepository = commentRepository;
}

@Override
public CommentDto createComment(long postId, CommentDto commentDto){
Comment comment = mapToEntity(commentDto);
Post post = postRepository.findById(postId).orElseThrow(() -> new ResourceNotFoundExceptiom("Post","id",postId));
comment.setPost(post);
Comment newComment = commentRepository.save(comment);
return mapToEntity(newComment);
}

private CommentDto mapToDTO(Comment comment){
		CommentDto commentDto = new CommentDto();
		CommentDto.setId(comment.getId());
		CommentDto.setName(comment.getName());
		CommentDto.setEmail(comment.getEmail());
		CommentDto.setBody(comment.getBody());
		return commentDto;
}

Controller

在 Controller 中建立 CommentController.java 去作 API URL 的路徑設定以及功能的實現,除此之外也可以處理或是接收 HTTP 回傳的 code

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

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

以上是 Comment API 的部分實作,接下來會在描述接下來的步驟~

謝謝大家的觀看~

明天見~


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

尚未有邦友留言

立即登入留言