@PutMapping / @DeleteMapping 에서 @RequestParam 왜 안되는거여?

2022. 4. 6. 03:39Back-end/Spring

반응형

PutMapping / DeleteMapping : Body 읽기

  • @PutMapping이나 @DeleteMapping을 통해 리소스 id를 @PathVariable로 받고 그 외의 변수들은 @RequestParam으로 받으려고 했을 때, query string이 아닌 body에 데이터를 넣고 전송하려하면 정상적으로 작동하지 않는다.
  • body에 담긴 데이터가 POST Method에서는 @RequestParam에는 매핑이 되는데 왜 PUT, DELETE는 안되나 싶어서 찾아봤다.

 

  • 이슈되는 부분은 spring이 아닌 tomcat에 있었다. tomcat에서 request의 body 내용을 HTTP POST Method 일 때만 파싱해오도록 설정되어 있기 때문이다. 
  • 이를 해결하기 위한 한가지 방법으로 HTTP DELETE / PUT Method 일 경우에도 request의 body 내용을 파싱하도록 설정하는 것이다.
  • 그 설정은 tomcat의 server.xml에서 parseBodyMethods=“POST, DELETE” 이런 식으로 설정해 주는 것이다.
반응형