일관성을 지키기 위해서는 PostMapping 을 사용하는 게 좋다.
@PostMapping("/events/{id}/delete")
public String cancelEvent(@CurrentAccount Account account, @PathVariable String path,
@PathVariable Long id){
...
}
하지만 파라미터 중 @PathVariable String path! 일반화 시킬 수 없다. 이벤트 id 같은 경우는 event로 읽어오니까 가능하긴 하겠지만 스터디와 같은 경우는 다양한 방법으로 읽어온다. 어떤 것은 스터디가 있는지, 어떤 것은 권한이 있는지, 최적의 데이터만 가져오도록 또다른 repository를 사용하기도 하고 .. 그래서 일관된 path를 사용할 수 없다.
<form th:action="@{'/study/' + ${study.path} + '/events/' + ${event.id}}" th:method="delete">
<button class="btn btn-primary" type="submit" aria-describedby="submitHelp">확인</button>
</form>
form의 method는 post 인데, input 안에 _method, delete 필드가 추가되었음을 볼 수 있다.
나중에 일관성을 위해 수정할 예정, 지금은 이런 방법이 있다는 것을 알고 있어라!
출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발