⭐️ Content type : application/json
{
"title" : "test5",
"content" : "test5",
"address" : "서울시 용산구 홍길동 23-59",
"latitude" : 23.33311,
"longitude" : 13.1234
}
이미지 선택 (1~3장)
// PostController
@PostMapping("")
public ResponseEntity<PostResponseDto> createPost(
@RequestBody PostRequestDto postRequestDto,
@RequestPart("images") List<MultipartFile> images
) throws IOException {
return postService.createPost(postRequestDto, images);
}
2023-08-09T18:54:48.537+09:00 WARN 80095 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'multipart/form-data;boundary=--------------------------538120508273299913364362;charset=UTF-8' is not supported]
만약
PostRequestDto
를@RequestBody
로 받는다면 위와 같이 Media Type오류가 발생한다.
// PostController
@PostMapping("")
public ResponseEntity<PostResponseDto> createPost(
@RequestPart PostRequestDto postRequestDto,
@RequestPart("images") List<MultipartFile> images
) throws IOException {
return postService.createPost(postRequestDto, images);
}
RequestPart로 받아야 오류가 생기지 않는다.
@RequestBody는 텍스트 기반의 요청이 들어왔을 때 사용이 되고, 텍스트 기반의 요청과 이미지 파일과 같이 바이너리 데이터를 포함한 데이터가 같이 요청이 들어온다면 한 개의 요청을 여러 부분으로 나누어서 데이터를 처리할 수 있다.
복합적인 데이터 형식인 경우에는 @RequestPart를 사용하는 것이 적합하다.