개발.log/framework

[SpringBoot]Multiple @RequestBody values in one controller method/@RequestBody 여러 개 사용/HttpMessageNotReadableException 해결

개발하는 주디씨 2023. 9. 20. 16:02

무지성으로 개발하다 보니,, 점점 기본적인 CS 지식들을 잊어버리는 기분이 들었다. 당연하게 @RequestBody를 쓰던 중 추가되는 요건으로 점점 DTO는 늘어나고,, @RequestBody를 추가하는 일이 생겼다.

문법적 오류는 없었기 때문에 별다른 이슈가 없었고 API를 실행하니 터졌다ㅋㅋㅋㅋ

 

org.springframework.http.converter.HttpMessageNotReadableExcept ion:
Required request body is missing

 

 

한마디로.. RequestBody를 JSON형식으로 파싱하여 인식하지 못했다는 것이다. 생전 처음 보는 이슈에 이게 뭐지.. 싶었지만 자세히 보니 @RequestBody가 두 개 선언되어 있는 나의 controller를 마주했다;;;

 

그렇다면, 왜⸌◦̈⃝⸍ʷʰʸˀ̣ˀ̣ˀ̣ 2개를 쓰지 못할까??

구글링을 좀 해보니 금세 Stackoverflow에서도 예전부터 나왔던 이슈라는 걸 알게되었다. (궁금한 사람은 아래 링크 GO!)

 

https://stackoverflow.com/questions/27189730/multiple-requestbody-values-in-one-controller-method

 

Multiple @RequestBody values in one controller method

I'm receiving error 400 when I send PATCH request to my endpoint that looks like this @RequestMapping(value = "...", method = RequestMethod.PATCH, consumes = "application/json", produc...

stackoverflow.com

 

 

그래서 결론은 불행하게도 Web Application의 구조상 이와 같은 방법은 불가능하다. @RequestBody는 Single Object만을 처리할 수 있도록 되어 있기 때문이죠. 그래서 위와 같이 여러 개의 @RequestBody를 선언하는 것은 불가능하다. 따라서 추가되는 정보를 처리하기 위해서는 두 개의 DTO를 Single Object로 구성하여 Parameter setting을 하였다