[게시판] 게시글 삭제

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들이 추가가 된다면 삭제 처리를 추가적으로 진행해야할 수도 있다.

 

 

 

포스트맨으로 확인.

# 토큰을 넣어 삭제 api 호출

 

정상적으로 게시글이 삭제됨과 동시에 삭제되었다는 문구가 정상적으로 출력되었다.

728x90
반응형
LIST

'프로젝트 > 라이프 챌린지' 카테고리의 다른 글

[게시판] 게시글 전체 목록 조회  (0) 2023.01.25
[게시판] 게시글 조회  (0) 2023.01.25
[게시판] 게시글 수정  (0) 2023.01.25
[게시판] 게시글 작성  (0) 2023.01.25
[회원관리] 회원탈퇴  (0) 2023.01.21