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
'SpringBoot' 카테고리의 다른 글
aws 인스턴스 서버에 [처음]Spring Boot jar를 올린다면 알아야할 주의 사항 (2) | 2020.10.16 |
---|---|
import와 의존성 주입은 다른가? (0) | 2020.08.23 |
properties 두 개 설정하기 (0) | 2020.08.14 |
왜 @Entity에는 @AllArgsConstructor와 @NoArgsConstructor가 필요한가? (0) | 2020.08.08 |
[면접]springboot 예상 질문 (0) | 2020.07.30 |
댓글