Framework/Spring Boot

[Error] Request method 'POST' not supported

잔망루피 2021. 6. 26. 10:48
DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]

수정 기능 구현할 때 컨트롤러에서 mapping 방식을 post에서 put으로 바꿨더니 이런 에러가 생겼다.

post는 생성, put은 수정할 때 쓰인다고 한다.

post는 멱등성이 없어서 같은 값을 여러 번 보내면 해당 값이 수정되는 것이 아니다.

새롭게 추가되어 여러 개가 생긴다 ..

 

 

🍯 해결

spring.mvc.hiddenmethod.filter.enabled=true

이 코드를 application.properties에 추가해줌

 

@Bean
	public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
		return new HiddenHttpMethodFilter();
	}

위 코드를 SpringBootApplication단에 추가하라는 말이 많았지만, 추가 안해도 잘 작동함.

참고로 추가해도 안 된다는 글들이 있었다

 

 

컨트롤러에서 put, delete로 매핑할 때 html에서

  1. form 태그의 method="post"
  2. form 태그 안에 <input type="hidden" name="_method" value="put"/>추가. delete는 value로 "delete"가 들어가면 됨.

 

✨ delete 요청을 보내는 삭제 버튼 예시

<form th:method="delete" th:action="@{'/post/delete/' + ${post.id}}">
                <input type="hidden" name="_method" value="delete">
                <button type="submit" class="btn btn-primary" th:if="${#strings.equals(post.author, username)}" onclick="deletePost();">삭제</button>
            </form>

 

 

 

 

👇 참고

https://m.blog.naver.com/hyoun1202/222058520474

 

[SpringBoot]HttpRequestMethodNotSupportedException: Request method 'POST' not supported 오류 해결하기

기존 웹 애플리케이션을 Spring Boot 을 이용해서 RESTful 한 웹애플리케이션으로 변경하다보면 기존...

blog.naver.com

 

https://velog.io/@53_eddy_jo/RESTful%ED%95%9C-%EC%84%B8%EA%B3%84%EC%97%90%EC%84%9C%EC%9D%98-POST%EC%99%80-PUT%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EA%B1%B0%EA%B8%B0%EC%97%90-FETCH%EA%B9%8C%EC%A7%80

 

RESTful한 세계에서의 POST와 PUT의 차이, 거기에 PATCH까지

HttpResponseHTTP/1.1 200 OK{ “id”: 1, “name”: “뽀로로”, “grade”: 1}HttpResponseHTTP/1.1 200 OK{ “id”: 1 “name”: “뽀로로”, “grade”: 2}HTTP/1.1 200 OK{ “id”

velog.io

 

반응형