[7] 작성한 게시글 삭제하기
들어가며
이전 포스팅에서는 작성한 게시글을 수정하는 기능을 구현해봤습니다. 이번 포스팅에서는 작성한 게시글을 삭제하는 기능을 구현해볼것입니다.
사전 준비
[SpringBoot] 무작정 (REST API)CRUD 게시판을 만들어 보자 게시글 수정 구현 [6]
[6] 작성한 게시글 수정하기 구현 들어가며 이전 포스팅에서는 조회수를 구현해봤다. 이번에는 작성한 게시글을 수정을 구현해볼 것입니다. 사전 준비 이전 포스팅 참고 [SpringBoot] 무작정 (REST API
back-stead.tistory.com
삭제하기 구현 내용
삭제하는 기능은 로그인한 사용자중에 작성한 사용자많이 삭제를 이용할수 있도록 해보겠습니다.
Service
BoardServiceImpl
@Override
public boolean deleteBoard(Long boardId,String memberUsername) {
Member byUsername = memberService.findByUsername(memberUsername);
Optional<Board> boardOptional = boardRepository.findById(boardId);
if (boardOptional.isPresent()) {
String writer = boardOptional.get().getWriter();
if (byUsername!=null && writer.equals(memberUsername))
{
boardRepository.deleteById(boardId);
return true;
}
} else {
throw new EntityNotFoundException("게시물이 존재하지 않습니다. ID: " + boardId);
}
return false;
}
주어진 회원이 작성한 게시물 중 하나를 삭제하는 메소드로, 회원과 게시물 존재 여부를 확인하고 권한이 일치하면 삭제합니다.
Controller
BoardController
@DeleteMapping("/delete")
@ResponseBody
public ResponseEntity<?> boardDelete(@RequestBody BoardDto boardDto){
try{
Long id = boardDto.getId();
String memberUsername = boardDto.getMemberDto().getUsername();
boolean deleteBoard = boardService.deleteBoard(id, memberUsername);
if (!deleteBoard){
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("등록된 사용자만 삭제가능");
}
return ResponseEntity.ok("삭제성공");
}catch (EntityNotFoundException e){
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("게시물이 존재하지 않습니다.");
}
}
주어진 게시물 ID와 회원 이름을 기반으로 게시물을 삭제하는 RESTful API 엔드포인트를 구현하며, 각 응답에 따른 상태코드와 메시지를 반환합니다.
삭제 API가 올바르게 작동되는것을 볼수있다. 이제 클라이언트에서 작동시 삭제가 되도록 구현해보자.
HTML
boardinfo.html
function boardDelete(){
if (loginverfiy===true){
var BoardConfirm = confirm("정말로 삭제 하시겠습니까?");
if (BoardConfirm){
var id = document.getElementById('input_id').value;
var login = document.getElementById('loginMember_username').value;
var dto = {
"id": id,
"memberDto" :{
"username" : login
}
}
$.ajax({
url:"/delete",
method : "delete",
contentType : "application/json",
data : JSON.stringify(dto),
success : function (response){
alert("삭제성공");
window.location.href="/board";
},
error : function (xhr){
if (xhr.status === 500){
alert("삭제도중 오류발생");
}
if (xhr.status===401){
alert("등록된 사용자만 삭제가능");
}
}
});
}
}else
alert("권한이 없습니다.");
}
기존에 작성했던 boardDelete()가 실제로 동작할수있도록 변경해고 실행해주면 삭제 기능이 작동될것이다
.
구현 테스트
위 영상 처럼 삭제가 된다면!! 올바르게 구현한것입니다.!! DB에가서 확인해봐도 삭제가 된것을 확인할수 있습니다.
다음으로
이번 포스팅에서는 정말 간단하게 삭제 기능을 구현해봤습니다. 다음 포스팅에서는 스프링 데이터 JPA를 활용한 페이징 처리를 통해서 구현해볼 예정입니다. 감사합니다!