@RequestPart와 @RequestParam은 스프링 MVC에서 사용되는 어노테이션으로, 클라이언트의 HTTP 요청에서 파라미터 값을 추출하는 데 사용된다.
비슷한 용어로 혼동할 수 있기에 차이점을 알아보자!
주로 폼 데이터와 파일을 함께 받을 때, 또는 쿼리 파라미터를 받을 때 사용된다.
?를 붙이고 키-값 쌍으로 전달되는 값을 의미한다.GET /api/users?name=John&age=25 로 보낸 HTTP 요청의 파라미터 값을 추출할 수 있도록 한다. 추출하게 되면 name : John, age : 25 인 값을 얻을 수 있다.@RequestParam은 단일 값 또는 다중 값의 쿼리 파라미터를 추출할 수 있다.required : 값이 필수가 아닌 경우 false 로 설정(default : true)defaultValue : 필수가 아닌 경우, 기본 값을 지정할 수 있다.@RequestParam(value = "page", required=false, defaultValue="0")주로 멀티파트 요청(multipart/form-data)에서 파일과 복합적인 데이터 (예: JSON 데이터 등)를 받을 때 사용된다.
@RequestPart는 단일 파일 또는 멀티파트 파라미터를 추출할 수 있다.@RequestPart("file") MultipartFile file로 사용한다.RequestParam: 폼 데이터나 쿼리 파라미터를 받는 데 사용된다. 파일도 받을 수는 있지만 파일을 받는 경우는 주로 RequestPart를 사용한다.
RequestPart: multipart 요청에서 파일, JSON 데이터와 같은 복합적인 데이터를 받을 때 사용한다.
MultipartFile은 Spring에서 파일 업로드를 처리할 때 사용하는 인터페이스이다.
HTTP 요청을 통해 파일을 보내면 Spring MVC가 MultipartFile 객체로 변환하여 컨트롤러에서 이 객체를 다룰 수 있게 된다.
MultipartFile은 Spring에서 파일 업로드를 처리하는 객체이다.
@RequestParam("file") MultipartFile file을 사용하여 파일을 받을 수 있다.
MultipartFile 주요 메서드| 메서드 | 설명 |
|---|---|
getOriginalFilename() | 업로드된 파일의 원본 파일명 |
getSize() | 파일 크기(바이트) 반환 |
getContentType() | 파일의 MIME 타입(ex: image/png, application/pdf) |
getBytes() | 파일 데이터를 바이트 배열로 반환 |
getInputStream() | 파일 내용을 읽을 수 있는 InputStream 제공 |
transferTo(File dest) | 파일을 특정 경로에 저장 |
MultipartFile vs 일반 File 객체 차이?| 구분 | MultipartFile | File 객체 |
|---|---|---|
| 데이터 | HTTP 요청에서 업로드된 파일 | 로컬 파일 시스템의 파일 |
| 읽기 방식 | 메모리 or 디스크에 임시 저장 | 파일 경로를 통해 직접 접근 |
| 변환 가능 여부 | File로 변환 가능 | MultipartFile로 변환 불가 |