-
[Spring Boot] @ModelAttribute 와 @RequestBody 의 차이프로그래밍 2023. 5. 21. 19:47반응형
그동안 스프링 부트로 서버를 개발하면서 @ModelAttribute 와 @RequestBody의 정확한 차이를 모르고 그냥 MVC에서는 @ModelAttribute, REST API 개발에서는 @RequestBody 를 사용했다. 하지만 이번 팀 프로젝트에서 프론트와 백엔드를 붙이면서 여기서 문제가 발생했다.
@ModelAttribute 는 URL에서 파라미터로 데이터를 전송할 때 해당 파라미터를 DTO 객체와 매핑시켜준다. 또한 이렇게 동작하기 위해서는 프론트에서 Content-Type 을 반드시 application/x-www-form-urlencoded 이나 multipart/form-data 로 설정해주어야 한다.
@RequestBody 는 프론트에서 보낸 request 에서 body 를 파싱해서 DTO 객체에 매핑한다. 그러므로 프론트에서 데이터를 보낼 때 Content-Type 을 application/json 으로 보내줘야 제대로 동작한다.
둘 다 제대로 설정해주지 않을 경우 request 가 성공적으로 서버로 도달해도 DTO 객체에는 모두 null 로 설정되어있을 것이다.
반응형'프로그래밍' 카테고리의 다른 글
Dockerfile 작성 시 주의할 점 (0) 2024.06.26 MySQL - 쿼리 작성 순서와 실제 실행 순서 (0) 2023.07.29 [Spring Boot] CORS 문제 (0) 2023.05.21 자바 서블릿 (Java Servlet) 정리 (0) 2022.10.31 Spring Web MVC 레퍼런스 (0) 2022.10.29