HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
/
☠️
백엔드 기술 문서
/
🗃️
Swagger에서 file, dto 동시에 보낼 때 swagger-ui에서 요청/응답 확인하는 법
🗃️

Swagger에서 file, dto 동시에 보낼 때 swagger-ui에서 요청/응답 확인하는 법

문제상황

  • @RequestPart를 사용하여 content-type이 ‘multipart/form-data’인 file, dto를 동시에 보내려고 함
  • swagger-ui의 parameters에서 file은 뜨지만 dto는 뜨지 않음
@ApiOperation(value = "후기 생성", notes = "후기 등록을 요청합니다.") @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity<ApiResponse> createReview( @RequestPart(value = "data") ReviewCreateRequest request, @RequestPart(required = false) List<MultipartFile> files) { ... }
notion image
 

해결방법

  • @Parameter(name = "data", schema = @Schema(type = "string", format = "binary")) 을 DTO에 추가로 달아준다.
@ApiOperation(value = "후기 생성", notes = "후기 등록을 요청합니다.") @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity<ApiResponse> createReview( @Parameter(name = "data", schema = @Schema(type = "string", format = "binary")) @RequestPart(value = "data") ReviewCreateRequest request, @RequestPart(required = false) List<MultipartFile> files) { ... }
notion image
  • DTO로 넣어주고 싶은 json 파일을 업로드할 수 있게 됨
 

Swagger에서 테스트해보기 (상세 설명)

  1. 후기 내용이 들어간 json 파일을 준비해줍니다. (아래 json 파일 다운로드)
    1. s3-us-west-2.amazonaws.com
      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cd64b8fd-f5ea-49d6-9ee2-2f117544487e/data.json
  1. 후기 사진으로 넣을 테스트 이미지 파일을 준비합니다. (필수 아님. 최대 10개)
  1. Parameters > data와 files 부분의 ‘파일 선택’ 버튼을 클릭하여 파일 업로드합니다.
      • data에는 후기 내용이 들어간 json 파일을 업로드
      • files에는 후기 사진으로 넣을 이미지 파일 0~10개 업로드
      notion image
  1. Execute 버튼을 눌러 응답결과를 확인합니다.

참고 자료

https://github.com/springdoc/springdoc-openapi/issues/820