본문 바로가기
SpringBoot

Spring Boot에서 HttpMethod delete 사용할 때 주의할 점.

by devebucks 2020. 10. 11.
728x90

Http Method중 하나인 delete요청을 처리하는 기능을 추가하면서 다음과 같은 에러가 발생했습니다.

There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'POST' not supported
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported

 

HttpMethod에는 GET, POST, PUT, DELETE가 있습니다. 

Spring Boot에서 PUT과 DELETE요청을 어노테이션인 @DeleteMapping이나 @PutMapping을 사용할 경우는 application.properties에 다음 코드를 작성해줘야 합니다.

spring.mvc.hiddenmethod.filter.enabled=true

해당 설정은 HTML <FORM>에서 DELETE나 PUT 요청을 보낼 때에는 다음 소스처럼 <input>에 설정이 필요했지만,

<form action = "/notification/list" method = "delete">
	<input type="hidden" name ="_method" value="delete"/>
    <button type="submit" class ="btn">수정하기</button>
</form>

 

설정을 사용하게 되면, <input>태그를 생략하고 th:method에서 PUT 또는 DELETE를 사용해서 보내는 _method를 사용해서 @PutMapping과 @DeleteMapping으로 요청을 맵핑을 할 수 있게 된다.

 

해당 소스를 추가하지 않으면, DELETE나 PUT 요청 시 다음과 같은 에러가 발생합니다.

 

 

제가 실제로 사용한 사례를 보여드리겠습니다. 동작합니다.

- application.properties

- html소스

- delete응답을 처리하는 controller.java 소스.

 

 

감사합니다.

728x90

댓글