MultipartFile file
(List<.MultipartFile>로 해도 무관)
RequestDto requestDto
#controller
@PostMapping("/post")
public ResponseEntity<ApiResponse> createPost(
@RequestParam(value = "file", required = false) List<MultipartFile> files,
@RequestPart(value = "requestDto") PostRequestDto postRequestDto) throws IOException {
postService.createPost(files, postRequestDto);
return ResponseEntity.status(HttpStatus.CREATED).body(new ApiResponse("post 생성 성공!", HttpStatus.CREATED.value()));
}
MultipartFile은 RequestPart으로 받고 postRequestDto는 RequestPart로 받고 value 값만 설정해주면 된다.
(* required = false은 빈값 허용)
각 value를 key에 입력하고 MultipartFile은 key에서 file 선택 후 파일 선택, postRequestDto는 json 형식으로 입력
이렇게 하고 테스트를 돌리면 오류가 나는데 코드 문제가 아니고 포스트맨에 설정을 하나 추가해주면 된다.
{ "timestamp": "2023-08-29T13:02:13.506+00:00",
"status": 415,
"error": "Unsupported Media Type",
"path": "/api/post" }
그럼 성공!
{ "message": "post 생성 성공!",
"statusCode": 201 }
PostMapping 이나 RequestParam/RequestPart 애네테이션에 다른 설정을 굳이 주지 않아도 되며 오히려 오류가 날 수 있으니 주의할 것