문제상황
- @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에서 테스트해보기 (상세 설명)
참고 자료
https://github.com/springdoc/springdoc-openapi/issues/820