@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();
}
/** 추가 끝 **/
}
'Spring > SpringBoot' 카테고리의 다른 글
@SpringBoot- @NotNull VS @Column(nullable=false) (0) | 2024.03.13 |
---|---|
SpringBoot-JPA에서 DTO로 바로 조회하기 (0) | 2023.07.07 |
SpringBoot- 패치 조인 최적화 (0) | 2023.07.06 |
SpringBoot- API (0) | 2023.07.04 |
SpringBoot- @Valid, @ResponseBody, @RequestBody (0) | 2023.06.28 |