Back End/트러블슈팅

[트러블슈팅] Request Body 가 빈값으로 전달됨 (405 MissingServletRequestParameterException)

DevPing9_ 2022. 5. 21. 22:01

 

BE 의 컨트롤러는 PUT Method 를 매핑하고 있었고, FE 에서는 PUT 요청으로 보내고 있었는데

405 Method Not Allowed 를 FE 에서 전달받아, 스프링시큐리티 설정 어딘가에서
특정 HTTP Method 를 막아놓은 줄 알고 엄청 삽질을 했습니다...

 

심지어 BE 에서 확인 할 수 있는 Exception 은 MissingServletRequestParameterException 이었는데

보통 클라이언트가 API 명세와 다른 Request Body 를 보냈을 때 발생 합니다.


하지만... 저는 그게 아니었죠. ㅠ_ㅠ...
값 자체가 전혀 전달이 되지 않았거든요,,,


현상


컨트롤러에 Request Body 가 빈값으로 전달됨

 

 

원인


FE 에서 Payload 는 HTML formData 으로, HttpMethod 는 PUT 으로 요청을 하고 
BE 에서 컨트롤러가 PUT Method 를 매핑하고 있어 발생한 문제

 

HTML formData 는 GET/POST만 지원한다 (HTTP 스펙)

 

<form>: The Form element - HTML: HyperText Markup Language | MDN

The <form> HTML element represents a document section containing interactive controls for submitting information.

developer.mozilla.org

 

 

해결


FE 에서 Payload 를 JSON 으로 를 변환하여 보낸다

 

 

 

 

728x90