기본 콘텐츠로 건너뛰기

라벨이 requestbody인 게시물 표시

스프링 MVC에서 @RequestBody와 @ModelAttribute를 어떻게 구분해 써야 할까

스프링 MVC에서 @RequestBody와 @ModelAttribute를 어떻게 구분해 써야 할까 목차 왜 둘이 자주 헷갈릴까 요청은 어디서 읽히는가 내부 동작은 어떻게 다를까 @RequestBody 가 맞는 상황과 코드 예시 @ModelAttribute 가 맞는 상황과 코드 예시 설정까지 함께 봐야 하는 이유 curl 로 보면 차이가 더 분명해진다 검증과 예외 처리에서 주의할 점 실무에서는 어떤 기준으로 고르면 될까 빠른 답 JSON 본문을 DTO로 받는다면 대부분 @RequestBody를 사용합니다. 쿼리스트링, 폼 전송, multipart/form-data를 객체로 묶을 때는 @ModelAttribute가 더 자연스럽습니다. 둘의 차이는 문법보다 Content-Type, 바인딩 대상, 내부 변환기 흐름에서 갈립니다. 파일 업로드와 일반 필드를 함께 받는 요청은 @ModelAttribute 쪽이 실무에서 더 자주 쓰입니다. 빠른 답 application/json 본문을 DTO로 받는 요청이라면 보통 @RequestBody 를 사용합니다. 쿼리스트링, application/x-www-form-urlencoded , multipart/form-data 를 객체로 묶을 때는 @ModelAttribute 가 더 자연스럽습니다. 둘의 차이는 문법보다 데이터를 어디서 읽는지, 그리고 어떤 바인딩 경로를 타는지에 있습니다. 파일 업로드가 섞인 요청은 대부분 @ModelAttribute 로 처리하고, JSON 파트가 따로 필요할 때만 @RequestPart 를 함께 검토합니다. 왜 둘이 자주 헷갈릴까 @RequestBody 와 @ModelAttribute 는 둘 다 컨트롤러에서 "요청 데이터를 DTO로 받는다"는 점만 보면 비슷해 보입니다. 그래서 처음에는 애너테이션 취향 차이처럼 느껴지기 쉽습니다. 하지만 실제로는 출발점이 완전히 다릅니다. @RequestBody 는 HTTP 요청의 body 전체를 읽어서 객체로 변환합...