반응형
@RequestPart
- Content-Type 이 'multipart/form-data' 에 특화된 어노테이션
- HTTP request body 에 multipart/form-data 가 포함되어 있는 경우에 사용
- MultipartFile 을 받을 때 사용 가능
- 단, HttpMessageConverter 가 Content-Type 을 참고하여 알맞는 Converter 로 처리한다
- MultipartFile 이 포함되는 경우에 MultipartResolver가 동작하여 역직렬화를 하게 된다.
(역직렬화 : Byte로 되어있는 데이터를 객체 형태로 변환)
단, MultipartFile 이 포함되어있지 않다면, @RequestBody 와 마찬가지로 HttpMessageConverter가 동작된다.
@RequestParam
- HTTP 요청에서 하나의 파라미터를 받을 때 사용
- 단순 파라미터 값에 효과적인 어노테이션
- 기본적으로 파라미터가 필수적으로 들어오게 설정되어 있기 때문에(파라미터 여부가 default로 true),
파라미터가 들어오지 않을 경우 에러(400 에러)가 발생할 수 있다.- 만약, 들어오지 않을수도 있다면 @RequestParam(required = false) 로 설정해주면 된다
- MultipartFile 을 받을 때 사용 가능
- 단, 파라미터가 String 이나 MultipartFile 이 아닌 경우, Converter 나 PropertyEditor 에 의해 처리된다
@RequestBody
- HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다
(HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할)
- 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할
- HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하기 때문에,
Content-Type 은 반드시 명시해야 한다- 자주쓰는 Content-Type 종류
- application/json : { key : value } 형태인 json 형태로 전송
- application/x-www-form-urlencoded : name=obo&number=123456 형태인 쿼리 스트링 형태로 전송
- multipart/form-data : 파일 업로드시 사용되며, 파일을 포함한 여러 데이터가 part(쪼개서) 형식으로 나눠서 전송
- 자주쓰는 Content-Type 종류
- 많은 데이터를 주고 받을 때는 @RequestBody 와 DTO 를 이용하는 편이 좋다.
- MultipartFile 을 여러개로 받기 위해선 List<MultipartFile> 형태로 받을 수 있다
참고
https://velog.io/@hwan2da/Spring-RequestBody-vs-RequestParam-vs-RequestPart-vs-ModelAttribute
반응형
'Back-end > Spring' 카테고리의 다른 글
[Spring] AWS SageMaker 엔드포인트 연결 시도하기 (0) | 2024.11.23 |
---|---|
[Spring] self-hosted Runner를 통한 CI/CD 배포 (0) | 2024.11.21 |
[Spring] Spring Boot에서 Google Meet API 적용해보기 (10) | 2024.10.06 |
[Spring] JWT + Redis를 활용한 로그아웃 구현 (Jwt BlackList) (3) | 2024.10.06 |
[Spring] Query Parameter vs Path Variable (2) | 2024.10.02 |