안녕하세요?
저번 포스팅에서는 Retrofit의 POST 방식에 대해서 알아봤었습니다. 이번에는 서버에 이미지나 오디오 파일을 전송할때 사용하는 Multipart에 대해 알아보겠습니다.
Multipart는 File 객체(이미지, 오디오 파일 등)인 것과 아닌 것(문자열, 숫자) 등을 모두 서버에 전송할 수 있습니다.
전송하고자 하는 데이터에
File 객체가 없는 경우는 다음 2가지 경우를 알아보겠습니다.
- string 혹은 int 등 하나의 데이터만 보내는 경우
- string 혹은 int 등 여러개의 데이터를 보내는 경우
1. string 혹은 int 등 하나의 데이터만 보내는 경우
데이터 단 한개만 전송할때 email(문자열)을 RequestBody에 담아서 전송할 수 있습니다.
이때는 @Part 어노테이션을 사용합니다.
2. string 혹은 int 등 여러개의 데이터를 보내는 경우
데이터 단 한개만 전송할때 여러 데이터를 Map<String, RequestBody>에 담아서 한 번에 전송할 수 있습니다.
이때는 @PartMap 어노테이션을 사용합니다.
전송하고자 하는 데이터에
File 객체가 있는 경우는 다음 3가지 경우를 알아보겠습니다.
- 한 개의 File만 보내는 경우
- 여러개의 File을 보내는 경우
- File과 여러 데이터를 같이 보내는 경우
1. 한 개의 File만 보내는 경우
예제는 이미지 파일을 전송합니다. 이미지 File을 RequestBody에 담습니다.(mime type 지정), 그리고 MultipartBody에 requestBody 객체를 담아서 전송하는 방식입니다.
2. 여러개의 File을 보내는 경우
여러개의 File을 전송하는 경우 1번에서 만든 MultipartBody를 List에 담아서 전송합니다.
3. File과 여러 데이터를 같이 보내는 경우
File과 여러 데이터를 함께 보내기 위해서 @Part, @PartMap 어노테이션을 함께 사용합니다.
@Part 어노테이션의 파라미터에는 File 객체, @PartMap 어노테이션의 파라미터에는 데이터들을 RequestBodt에 담고, Map<string, RequestBody>에 담아서 한꺼번에 전송할 수 있습니다.
여기까지, Multipart에 대해 알아보았습니다.
Retrofit 관련 포스팅은 여기까지가 계획했던 마지막이고 다음에 더 공부하게 된 사항이나 기록해야할일이 생기면 관련 내용 포스팅할 예정입니다.
'안드로이드 > 오픈소스' 카테고리의 다른 글
[안드로이드] Aws Amplify 라이브러리 v1 -> v2 마이그래이션 (0) | 2023.11.29 |
---|---|
Retrofit2 알아보기 2 - @POST 사용 (0) | 2022.01.03 |
Retrofit2 알아보기 1 - @GET 사용 (0) | 2021.12.29 |