Content-Type 이 'multipart/form-data' 에 특화된 어노테이션
MultipartFile 을 받을 때 사용 가능
MultipartFile 이 포함되는 경우에 MultipartResolver가 동작하여 역직렬화를 하게 된다.
(역직렬화 : Byte로 되어있는 데이터를 객체 형태로 변환)
단, MultipartFile 이 포함되어있지 않다면, @RequestBody 와 마찬가지로 HttpMessageConverter가 동작된다.
HTTP 요청에서 하나의 파라미터를 받을 때 사용
기본적으로 파라미터가 필수적으로 들어오게 설정되어 있기 때문에(파라미터 여부가 default로 true),
파라미터가 들어오지 않을 경우 에러(400 에러)가 발생할 수 있다.
MultipartFile 을 받을 때 사용 가능
HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다
(HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할)
바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할
HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하기 때문에,
Content-Type 은 반드시 명시해야 한다
많은 데이터를 주고 받을 때는 @RequestBody 와 DTO 를 이용하는 편이 좋다.
List<MultipartFile>
형태로 받을 수 있다참고: @RequestBody, @RequestParam, @RequestPart
참고: [Spring] RequestBody vs RequestParam vs RequestPart vs ModelAttribute
글이 많은 도움이 되었습니다, 감사합니다.