[게시판] 게시글 삭제
2023. 1. 25. 15:31ㆍ프로젝트/라이프 챌린지
728x90
SMALL
게시글은 삭제도 될 수 있어야 한다.
수정 api 와 마찬가지로 삭제하려고 하는 유저가 해당 게시글을 작성한 작성자 맞을 경우에만 삭제가 되도록 만든다.
PostController
// 게시글 삭제
@DeleteMapping("/post/delete/{post_id}")
public ResponseEntity<ResponseBody> postDelete(HttpServletRequest request, @PathVariable Long post_id){
log.info("게시글 삭제 - 삭제 게시글 id : {}", post_id);
return postService.postDelete(request, post_id);
}
컨트롤러에 삭제 처리를 할 api를 만들어준다.
- 삭제 처리가 진행되어야 하므로 DeleteMapping method 타입으로 만들어준다.
- Service 단에 넘겨줄 인자값은 HttpServletRequest, 삭제할 Long 타입 post_id.
PostService
// 게시글 삭제
@Transactional
public ResponseEntity<ResponseBody> postDelete(HttpServletRequest request, Long post_id) {
// 게시글 작성 유저 정보 불러오기
Member auth_member = checkAuthentication(request);
// 삭제하고자 하는 유저가 게시글의 작성자인지 확인
if (queryFactory
.selectFrom(post)
.where(post.post_id.eq(post_id).and(post.member.eq(auth_member)))
.fetchOne() == null) {
return new ResponseEntity<>(new ResponseBody(StatusCode.NOT_MATCH_POST_WRITER.getStatusCode(), StatusCode.NOT_MATCH_POST_WRITER.getStatus(), null), HttpStatus.BAD_REQUEST);
}
// 게시글 삭제
queryFactory
.delete(post)
.where(post.post_id.eq(post_id))
.execute();
return new ResponseEntity<>(new ResponseBody(StatusCode.OK.getStatusCode(), StatusCode.OK.getStatus(), "게시글 정상적으로 삭제되었습니다."), HttpStatus.OK);
}
삭제처리를 진행할 Service 로직을 만들어준다.
- checkAuthentication 으로 검증된 유저 Member객체를 가져온다.
- 현재 삭제하려고하는 유저가 작성한 게시글이 맞는지 확인하는 에러 처리 로직을 만들어준다.
- 맞다면 Delete문을 사용하여 게시글을 삭제해준다.
# 이후 댓글 기능이나 게시글과 관련된 api들이 추가가 된다면 삭제 처리를 추가적으로 진행해야할 수도 있다.
포스트맨으로 확인.
정상적으로 게시글이 삭제됨과 동시에 삭제되었다는 문구가 정상적으로 출력되었다.
728x90
반응형
LIST
'프로젝트 > 라이프 챌린지' 카테고리의 다른 글
[게시판] 게시글 전체 목록 조회 (0) | 2023.01.25 |
---|---|
[게시판] 게시글 조회 (0) | 2023.01.25 |
[게시판] 게시글 수정 (0) | 2023.01.25 |
[게시판] 게시글 작성 (0) | 2023.01.25 |
[회원관리] 회원탈퇴 (0) | 2023.01.21 |