@RequestPart 알아보기

2025. 2. 12. 10:56·Spring
목차
  1. 📌1.  @RequestPart란?
  2. 2. @RequestParam vs @RequestBody vs @RequestPart 차이점
  3. 3. @RequestPart 사용 예제
  4. 4. @RequestPart가 필요한 이유
  5. 정리

📌1.  @RequestPart란?

@RequestPart는 멀티파트 요청 (multipart request) 에서 특정 파일이나 JSON 데이터를 개별적으로 매핑할 때 사용되는 Spring MVC의 어노테이션입니다.


2. @RequestParam vs @RequestBody vs @RequestPart 차이점

어노테이션 사용 대상 주요 목적 Content-Type

@RequestParam 단순 파라미터 (쿼리 스트링, 폼 데이터) 기본 데이터 타입 (String, int 등) 전송 application/x-www-form-urlencoded
@RequestBody JSON 요청 본문 객체로 변환 (DTO 등) application/json
@RequestPart 멀티파트 요청 (파일 + JSON) 파일과 JSON 데이터를 함께 받기 multipart/form-data

 


3. @RequestPart 사용 예제

📌 파일과 JSON 데이터를 동시에 받는 경우

@RestController
@RequestMapping("/posts")
public class PostController {

    @PostMapping("/write")
    public ResponseEntity<String> writePost(
            @RequestPart("postDto") PostDto postDto, // JSON 데이터
            @RequestPart(value = "file", required = false) MultipartFile file // 파일 (선택)
    ) {
        log.info("게시글 작성: {}", postDto);
        
        if (file != null) {
            log.info("첨부된 파일: {}", file.getOriginalFilename());
        }

        return ResponseEntity.ok("게시글 작성 완료!");
    }
}

요청 예시 (Postman)

multipart/form-data로 요청

POST /posts/write
Content-Type: multipart/form-data

postDto: {"title": "Hello", "content": "This is a post"}
file: (image.jpg 첨부)

📌 Spring은 postDto를 JSON으로 변환하고, file을 MultipartFile로 처리.

 


4. @RequestPart가 필요한 이유

@RequestBody로 JSON과 파일을 동시에 받을 수 없는 문제

@PostMapping("/write")
public ResponseEntity<String> writePost(@RequestBody PostDto postDto, MultipartFile file) {
    // ❌ 실행되지 않음: @RequestBody는 JSON 요청만 처리할 수 있음
}
  • @RequestBody는 Content-Type: application/json을 기대하기 때문에 multipart/form-data를 처리하지 못함
  • 파일과 JSON을 동시에 받으려면 @RequestPart를 사용해야 함

정리

- @RequestPart는 multipart/form-data 요청에서 파일과 JSON 데이터를 함께 처리할 때 사용
- @RequestParam과 달리 JSON 데이터를 DTO로 변환 가능

- @RequestBody는 application/json에서만 동작하므로 멀티파트 요청과 함께 사용할 수 없음
- @RequestPart(value = "file", required = false)로 파일을 선택적으로 받을 수도 있음

 즉, @RequestPart는 파일과 JSON을 동시에 받아야 할 때 가장 적절한 방법!

'Spring' 카테고리의 다른 글

Spring Security + JWT  (1) 2025.02.21
Ports and Adapter 패턴 (Hexagonal)  (0) 2025.02.17
열어봐요 @RequestBody로 데이터 받는 과정  (0) 2025.02.10
@RequestBody 와 <form> 태그  (0) 2025.02.05
Spring Pageable 안 쓰면 바보  (1) 2025.01.31
  1. 📌1.  @RequestPart란?
  2. 2. @RequestParam vs @RequestBody vs @RequestPart 차이점
  3. 3. @RequestPart 사용 예제
  4. 4. @RequestPart가 필요한 이유
  5. 정리
'Spring' 카테고리의 다른 글
  • Spring Security + JWT
  • Ports and Adapter 패턴 (Hexagonal)
  • 열어봐요 @RequestBody로 데이터 받는 과정
  • @RequestBody 와 <form> 태그
힐안
힐안
나 지금 학비 내면서 개발 독학하잖아.
  • 힐안
    후라이
    힐안
  • 전체
    오늘
    어제
    • 분류 전체보기 (59)
      • HTTP (9)
      • Spring (28)
        • 웹 게시판 (4)
      • Neural Network (1)
        • CNN (1)
        • RNN (0)
      • Deep Learning (6)
      • Audio (3)
      • 알고리즘(JAVA) (2)
      • 백준 (10)
        • Bronze (0)
        • Silver (2)
        • Gold (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    Spring
    Genrative_model
    프레임워크
    자바
    JSON
    최단경로알고리즘
    MVC
    web
    딥러닝
    MNIST
    백준
    HTTP
    스프링부트
    플로이드와샬
    벨만포드
    티스토리챌린지
    백엔드
    웹
    dcgan
    API
    비지도학습
    오블완
    GAN
    다익스트라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
힐안
@RequestPart 알아보기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.