Mambo
5k
2020-09-17 23:10:21
3
1727

스프링 프레임워크는 어떻게 요청 데이터를 바인딩할까?


스프링 프레임워크는 어떻게 요청 데이터를 바인딩할까?


컨트롤러 핸들러 함수의 모델 오브젝트 매개변수에 대한 모델 데이터 바인딩을 위해서 어떤 경우에 @ModelAttribute@RequestBody를 사용해야하는지 모르는 분이 많은 것 같아 작성하였습니다.


https://mambo-docs.github.io/how-does-springframework-bind-request-data/


위 글의 정리 내용은 다음과 같습니다.

1. HTML 폼 데이터 전송은 application/x-www-form-urlencoded으로 보내는 것

2. 서블릿 API는 POST로 전송되었을 경우 폼 데이터 필드에 접근할 수 있음

3. 스프링 프레임워크는 FormContentFilter를 통해 PUT, PATCH, DELETE와 함께 application/x-www-form-urlencoded로 전송된 폼 데이터에 접근할 수 있도록 지원

4. @RequestBody가 선언되었는데 application/x-www-form-urlencoded로 요청되는 경우 FormHttpMessageConverter에 의해 MultiValueMap으로 변환 시도

5. 4번 내용으로 인해 모델 오브젝트는 @RequestBody로 application/x-www-form-urlencoded로 전송되는 데이터를 바인딩 할 수 없음



1
  • 댓글 3

  • 한국은역시자바
    221
    2020-09-18 02:03:21

    블로그 글 잘 읽고있습니다. 정리가 매우 잘되있네요. 

    추가적으로 궁금한점이 있다면 application/json으로 요청을 보낼때는 보낼 데이터들을 JSON포맷으로 직렬화해서 보내야한다고 알고있습니다.


    이때 직렬화된 데이터들은 요청Body에 실어서 보내게되는건가요?

  • Mambo
    5k
    2020-09-18 13:15:53

    요청시 전송 되는 데이터는 HTTP Message Body에 위치합니다. Content-Type을 application/json이라고 설정하였으므로 Message Body에 위치하는 데이터는 JSON 형식의 문자열로 전송되어야하는게 맞습니다.

  • ignoreOrange
    2k
    2020-09-18 13:46:47

    블로그 엄청 깔끔하시네요

    테마 어떤건지 여쭤봐도될까요

    저두 개츠비로 블로그 해보려고 하는데

  • 로그인을 하시면 댓글 을 등록할 수 있습니다.