본문 바로가기

Spring/SpringBoot

SpringBoot- @DeleteMapping

@PostMapping과 @DeleteMapping의 차이점.

 기본적으로 POST 메서드를 통해서 DELETE 메서드의 역할을 충분히 수행할 수 있다. 그렇다면 굳이 @DeleteMapping을 사용하는 이유는 뭘까?

- 가독성

  가장 근본적인 이유는 가독성에 있다. 어떠한 엔티티를 삭제하기 위한 컨트롤러 메서드를 생성했다면 어노테이션으로는 @PostMapping 또는 @DeleteMapping을 사용할 수 있을텐데 이때 DeleteMapping으로 설정하게 된다면, 코드를 보는 입장에서 이 메서드는 명확하게 DELETE 메서드를 수행하는 메서드이다란 것을 이해할 수 있게 된다. 

@DeleteMapping 사용법

 @DeleteMapping을 사용하기 위해선 설정이 필요하다.

<form id="delete_form" action="/board/${board.id}/delete" method="post">
    <input type="hidden" name="_method" value="delete"/>
</form>

 form 태그의 method에 "delete"를 넣는 식으로는 delete 매핑을 할 수 없다. 별도로 hidden 타입을 설정하고 input 태그의 내용과 같이 설정을 해줘야지 해당 리퀘스트가 DELETE로 전송된다.

 

또한 "프로젝트Application.class"(메인 실행 클래스)에 다음 내용을 추가한다.

package project.hongik_hospital;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.web.filter.HiddenHttpMethodFilter;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@EnableJpaAuditing
@SpringBootApplication
public class HongikHospitalApplication {

	public static void main(String[] args) {
		SpringApplication.run(HongikHospitalApplication.class, args);
	}
    
    /** 다음 코드를 추가 **/
	@Bean  
	public HiddenHttpMethodFilter hiddenHttpMethodFilter() {
		return new HiddenHttpMethodFilter();
	}	
    /** 추가 끝 **/
}