1. Handler Multipart File(File Upload)
2. Handler Multipart File(File Download)
3. Response Entity
4. @Request Body & HttpEntity
5. @Response Body & ResponseEntity
1. Handler Multipart File
1-1) Handler Multi Part File
- 파일 업로드 시 사용하는 메소드 아규먼트
- Multipart Resolver 빈이 설정되어 있어야 사용할 수 있음(SpringBoot에서 자동설정 해줌)
- Post multipart/form-data 요청에 들어있는 파일을 참조 할 수 있음.
- List<MultipartFile> 아큐먼트로 여러 파일을 참조할 수도 있음.
1-2) form-file.html

1-3) FileController

1-4) Browser

1-5) FileControllerTest

2. Handler Multipart File(File Download)
2-1) 파일 리소스를 읽어오는 방법
스프링 ResourceLoader 사용하기
2-2) 파일 다운로드 응답 헤더에 설정할 내용
- Content-Disposition
- 사용자가 해당 파일을 받을 때 사용할 파일 이름
- Content-Type
- Content-Length
3. Response Entity
3-1) Response Entity
3-2) Tika 의존성 추가

3-3) Response Entity, FileController

4. @Request Body & Http Entity
4-1) Request Body
- 요청 본문(body)에 들어있는 데이터를 HttpMessageConverter를 통해
- 변환한 객체로 받아올 수 있음.
- @Valid 또는 @Validated를 사용해 값을 검증할 수 있음.
- BindingResult 아규먼트를 사용해 코드로 바인딩 또는 검증 에러를 확인할 수 있음.
4-2) HttpMessageConverter
- 스프링 MVC 설정에서 설정할 수 있음.
- configureMessageConverters : 기본 메시지 컨버터 대체
- extendMessageConverters : 메시지 컨버터에 추가
- 기본 컨버터
- WebMvcConfigurationSupport.addDefaultHttpMessageConverters
4-3) HttpEntity
- @RequestBody와 비슷하지만 추가적으로 요청 헤더 정보를 사용할 수 있음.
4-4) @RequestBody, EventApi
4-4)-1. EventApi

4-4)-2. EventApiTest

4-5) HttpEntity, EventApi
4-5)-1. EventApi

5. @ResponseBody & Http Entity
5-1) @ResponseBody
- 데이터를 HttpMessageConverter를 사용해
- 응답 본문 세미지로 보낼 때 사용함.
- @RestController 사용시 자동으로 모든 핸들러 메소드에 적용 됨.
5-2) ResponseEntity
- 응답 헤더 상태 코드 본문을 직접 다루고 싶은 경우에 사용함.
5-3) @ResponseBody, EventApi
5-3)-1. EventApi
- @ResponseBody는 메소드에 적용하는 거임.

5-4) ResponseEntity, EventApi
5-4)-1. EventApi
- ResponseEntity를 붙이는 순간 ResponseBody에 들어가는 객체가 됨.
- RestController → Controller로 수정이 가능함.

5-4)-2. EventApiTest
