Interceptor
Http의 요청과 응답 처리 중간에 개입하여 요청 또는 응답을 수정하거나 로깅하는데 사용된다.
대표적으로 요청에 헤더를 추가
하거나, 응답을 로깅
하거나, 인증토큰을 추가
하는 데 사용된다.
사용방법
addInterceptor()
메서드를 사용하여 객체를 추가해야 한다.
예를 들어 헤더를 추가하는 작업을 진행한다면, 다음과정을 따른다.
Interceptor
작성 및 적용OkHttpClient
를 생성하고Interceptor
를 추가Retrofit
에OkHttpClient
를 설정한다.
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
// Interceptor를 생성합니다.
val interceptor = Interceptor { chain ->
val originalRequest = chain.request()
// 여기에서 원하는 작업을 수행합니다.
// 예: 헤더 추가, 요청 수정, 로깅 등
val modifiedRequest = originalRequest.newBuilder()
.header("Authorization", "Bearer token123")
.build()
// 수정된 요청을 다음 단계로 전달합니다.
chain.proceed(modifiedRequest)
}
// OkHttpClient를 만들고 Interceptor를 추가합니다.
val client = OkHttpClient.Builder()
.addInterceptor(interceptor)
.build()
// Retrofit 빌더를 설정합니다.
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.client(client) // 위에서 생성한 OkHttpClient를 설정합니다.
.addConverterFactory(GsonConverterFactory.create()) // Converter 설정
.build()
Converter
Http
통신에서 발생하는 데이터의 변환을 담당한다.
응답받은 데이터를 Java/ Kotlin 객체로 변환하거나, 반대로 Java/Kotlin 객체를 서버로 보내는 요청 데이터로 변환하는 작업을한다.
매핑
- 변환
처리하는 과정
대표적으로 Json
, XML
이 있다. Json
데이터를 Java나 Kotlin 객체로 변환하는 데 가장 많이 사용된다.
Convertor를 설정하기 위해서는 addConverterFactory()
메서드를 사용한다.
예를들어 Gson 라이브러리
를 사용해서 Json 데이터
를 자바 객체로 변환하는 경우에는
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create()) // Gson을 사용한 JSON 변환
.build()
다음과 같이 작성한다.
[요약]
Interceptor : HTTP 요청 및 응답을 가로채 응답을 로깅하거나, 헤더를 추가하는데 사용된다.
Converter : HTTP 통신에서 데이터 형식간의 매핑과 변환을 처리
'안드로이드' 카테고리의 다른 글
AlarmManager을 공부(삽질)하며 알게된 사실 (0) | 2023.10.15 |
---|---|
[Android] await()이 안될 때 (0) | 2023.09.01 |
[Android] - zxing 라이브러리를 이용한 바코드 스캔 (0) | 2023.08.29 |
[Kotlin] 화면 캡쳐 기능 구현하기 (with Hilt, MVVM) (0) | 2023.08.27 |
[Android] Hilt - Retrofit + ViewModel로 이해해보기 (0) | 2023.08.25 |