[Spring] RequestPart 와 RequeryParam 차이 (feat. MultipartFile)

lovjgb·2023년 11월 7일

Spring

목록 보기
1/1

@RequestPart@RequestParam은 스프링 MVC에서 사용되는 어노테이션으로, 클라이언트의 HTTP 요청에서 파라미터 값을 추출하는 데 사용된다.

비슷한 용어로 혼동할 수 있기에 차이점을 알아보자!

RequestParam?

주로 폼 데이터와 파일을 함께 받을 때, 또는 쿼리 파라미터를 받을 때 사용된다.

  • multipart/form-data 형식으로 들어온 파일과 폼 데이터를 받을 수 있다.
  • 쿼리 파라미터?
    • URL 뒤에 ?를 붙이고 키-값 쌍으로 전달되는 값을 의미한다.
    • 예를들어, 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")

RequestPart?

주로 멀티파트 요청(multipart/form-data)에서 파일과 복합적인 데이터 (예: JSON 데이터 등)를 받을 때 사용된다.

  • @RequestPart는 단일 파일 또는 멀티파트 파라미터를 추출할 수 있다.
  • 예시: @RequestPart("file") MultipartFile file로 사용한다.

결론,

RequestParam: 폼 데이터나 쿼리 파라미터를 받는 데 사용된다. 파일도 받을 수는 있지만 파일을 받는 경우는 주로 RequestPart를 사용한다.
RequestPart: multipart 요청에서 파일, JSON 데이터와 같은 복합적인 데이터를 받을 때 사용한다.


MultipartFile?

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 객체 차이?

구분MultipartFileFile 객체
데이터HTTP 요청에서 업로드된 파일로컬 파일 시스템의 파일
읽기 방식메모리 or 디스크에 임시 저장파일 경로를 통해 직접 접근
변환 가능 여부File로 변환 가능MultipartFile로 변환 불가
profile
lovjgb

0개의 댓글