문제상황
- @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) {
...
}
해결방법
@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) {
...
}
- DTO로 넣어주고 싶은 json 파일을 업로드할 수 있게 됨
Swagger에서 테스트해보기 (상세 설명)
- 후기 내용이 들어간 json 파일을 준비해줍니다. (아래 json 파일 다운로드)
- 후기 사진으로 넣을 테스트 이미지 파일을 준비합니다. (필수 아님. 최대 10개)
- Parameters > data와 files 부분의 ‘파일 선택’ 버튼을 클릭하여 파일 업로드합니다.
- files에는 후기 사진으로 넣을 이미지 파일 0~10개 업로드
- Execute 버튼을 눌러 응답결과를 확인합니다.
참고 자료