Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • rsocket
  • Wil
  • grafana
  • 프로그래머스
  • 코틀린
  • webflux
  • 프리코스
  • 문자열
  • SQL
  • 레포지토리
  • 코딩테스트
  • ec2
  • kotlin
  • elasticsearch
  • 에라토스테네스의 체
  • 파이썬
  • til
  • 우아한테크코스
  • enum
  • 내림차순
  • 다이나믹 프로그래밍
  • kibana
  • 안드로이드
  • 코틀린 인 액션
  • Android
  • MariaDB
  • 백준
  • Docker
  • java
  • spring

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

Spring

[Spring] @RequestPart 사용하여 MultipartFile과 Dto 함께 받기, Postman 테스트

2023. 5. 14. 04:08

글을 작성한다고 할때, 제목, 내용을 작성할 수 있다면 다음과 같이 Controller와 dto클래스를 작성할 수 있을 것이다.

@PostMapping("/post")
public ResponseDto<Long> savePost(@Valid @RequestBody PostRequestDto postRequestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) {
    return postService.savePost(postRequestDto, userDetails.getMember());
}
@Getter
public class PostRequestDto {
    private String title;
    private String content;
}

 

PostMan으로 요청한다면 이렇게 보내면 될 것이다.

 

프로필 이미지만 변경한다고 했을 때, 다음과 같이 작성할 수 있을 것이다.

@PostMapping(value = "/profile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseDto<String> updateProfile(@RequestParam(value = "image") MultipartFile image, @AuthenticationPrincipal UserDetailsImpl userDetails) {
    return memberService.updateProfile(image, userDetails.getMember());
}

 

그러면 포스트맨으로 요청을 할 때 다음과 같이 보내면 될 것이다.

 

그렇다면 제목, 내용을 json으로 사진은 MultipartFile로 받고 싶다면 어떻게 해야할까?

 

@RequestPart 애노테이션을 사용하면 된다.

@RequestPart 애노테이션은 MultipartFile과 dto를 같이 받아야 할 때 사용할 수 있다.

@PutMapping(value = "/{id}/info", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseDto<?> updatePostIndo(@PathVariable Long id,
                                     @Valid @RequestPart(value = "postInfo") PostInfoRequestDto postInfoRequestDto,
                                     @RequestPart(value="thumbnail", required = false) MultipartFile multipartFile) {
    return postService.updatePostInfo(id, postInfoRequestDto, multipartFile);
}

 

PostMan에서 테스트할 때에는 postInfo의 value값으로 PostInfoRequestDto 클래스에 맞는 Json을 작성해주면 된다.

Content-Type을 application/json으로 지정해주어야 한다.

728x90

'Spring' 카테고리의 다른 글

[Spring] Spring WebFlux 간단한 예제  (0) 2023.05.25
[Spring] @RequestParam으로 Enum 타입 매개변수 받기  (0) 2023.05.15
[Spring] AWS S3 서비스를 사용하여 이미지 업로드  (0) 2023.05.09
[Spring] EC2 서버 실행 시, Web server failed to start. Port 8080 was aleady in use 해결  (0) 2023.05.08
[Spring] EC2 Connection Time 지정  (0) 2023.05.08
    'Spring' 카테고리의 다른 글
    • [Spring] Spring WebFlux 간단한 예제
    • [Spring] @RequestParam으로 Enum 타입 매개변수 받기
    • [Spring] AWS S3 서비스를 사용하여 이미지 업로드
    • [Spring] EC2 서버 실행 시, Web server failed to start. Port 8080 was aleady in use 해결
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바