BE/스프링 부트 3

8장 게시글 삭제하기: Delete

이제하네 2023. 12. 2. 23:07

데이터 삭제 과정

  1. 클라이언트가 HTTP메서드로 특정 게시물 삭제 요청 
  2. 삭제 요청을 받은 컨트롤러는 리파지터리를 통해 DB에 저장된 데이터 삭제
    (기존에 데이터가 있는 경우에만 수행)
  3. 삭제가 완료 됬다면 클라이언트를 결과 페이지로 리다이렉트 

 

데이터 삭제하기

  1. Delete 버튼 추가
    1. Delete 버튼을 상세페이지(show.mustache)에 추가
    2. Edit 버튼의 코드를 복사후 버튼의 텍스트를 Delete로 수정
    3. 서버가 삭제와 수정 요청을 구분해서 동작할수 있도록 삭체 요청 URL을 "/articles/{{article.id}}/delete"로 수정
    4. Edit 버튼과 구별하기위해 버튼 색상을 빨간색으로 수정
  2. Delete 요청을 받아 데이터 삭제
    1. delete() 메서드 기본 틀 만들기
      1. ArticleController에 delete()메서드 추가
      2. delete() 메서드의 기본 틀을 입력하고 return 값으로 null 을 반환
      3. 삭제 요청을 받기위해 매핑 어노테이션 작성   @GetMapping("/articles/{id}/delete") 으로 작성 
    2. 삭제할 대상 가져오기
      1. DB에 접근해 데이터를 처리 하기위해 JPA 리파지터리를 이용
        1. articleRepository.findById(id) 메서드로 DB에 해당 id를 가진 데이터를 찾고 있으면 Article타입의 target 변수에 저장 없으면 null을 반환
        2. findById(id)를 호출할 때 사용한 id 변수는 delete() 메서드에 선언되지 않음. 이 id는 @GetMapping("/articles/{id}/delete")의 URL 주소에서 가져오므로 delete() 메서드의 매개변수로 @PathVariable Long id로 작성
    3. 대상 엔티티 삭제하기
      1. target에 무엇인가 저장이 되었다면 삭제를 수행하도록 함
        1. if문을 사용해서 target이 null인지 아닌지 확인
        2. 삭제는 articleRepository를 작성하고 점을 찍어서 delete()메서드를 선택 그리고 전달값으로 target을 넣음 
    4. 결과 페이지로 리다이렉트하기
      1. return문에 게시물을 삭제하면 목록 페이지로 이동하기위해 null을 지우고 "redirect:/articles"을 작성
    5. 삭제 완료 메시지 남기기
      1. RedirectAttributes 객체로 리다이렉트 페이지에서 사용할 데이터를 남길 수 있다고 했습니다. RedirectAttributes를 활용하려면 delete() 메서드의 매개변수로 받아 와야 합니다. 객체 이름은 rttr 로 작성
      2. RedirectAttributes 객체의 addFlashAttribute() 메서드를 활용하면 리다이렉트 시점에 한 번만 사용할 데이터를 등록 가능 . 한 번 쓰고 사라지는 휘발성 데이터를 등록 
      3. if()문에 target의 null이 아니면 삭제가 진행되므로 if문 안쪽에 msg라는 키 문자열의 "삭제되었습니다" 라는 값을 메시지로 넣음
      4. msg 키 값에 담긴 메시지는 목록페이지에서 보여줘야되기 때문에 index.mustache을 수정
      5. 헤더 안에 삭제 메시지를 출력하는게 좋기 떄문에 header.mustache 파일을 열기
        1. 코드 맨 아래에 {{#msg}}{{/msg}}를 써서 msg 키를 사용할 범위를 잡아 줌
        2. 메시지 창(alert)으로 msg에 담긴 값을 출력과 닫기 버튼 추가 

 

show.mustache 파일에 Delete 버튼 추가
페이지에 들어가보면 Delete 버튼 추가
delete() 메서드의 기본틀
삭제 요청 잘 들어감
목록 페이지에서 잘 지워짐
headet의 마지막 부분에 코드 추가
alert 잘 출

 

'BE > 스프링 부트 3' 카테고리의 다른 글

10장 REST API 와 JSON  (0) 2023.12.10
9장 CRUD와 SQL 쿼리 종합  (0) 2023.12.06
7장 게시판 수정하기 :Update  (0) 2023.11.29
6장 게시판 내 페이지 이동하기  (0) 2023.11.24
5장 게시글 읽기: Read  (0) 2023.11.23