๐ก accessToken์ ๊ฒฝ์ฐ Header์ ๋ด์์ ์ ๋ฌํด์ฃผ๋ฉด ๋์ง๋ง, refreshToken์ ๊ฒฝ์ฐ ์ฟ ํค์ ๋ด์์ ์ ๋ฌํ๋ ๊ฒ์ด ๋ณด์์ ์ผ๋ก ๋ ์ข๋ค๊ณ ํฉ๋๋ค.
์ด๋ ์ ๋ ์ฟ ํค๋ฅผ ์ค์ ํ๋ ๋ฒ๊ณผ ์ฟ ํค๋ฅผ ๋ด๋ ๋ฒ์ ์ ๋ชฐ๋์ด์ ๊ธฐ๋กํ๊ธฐ ์ํด ์์ฑํฉ๋๋ค.
object๋ก ๊ตฌ์ฑํ์ฌ ๋ค๋ฅธ class์์ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํํด์ค๋๋ค.
object RetrofitClient {
private var instance: Retrofit? = null
private val gson = GsonBuilder().setLenient().create()
private const val BASE_URL = "api์ baseURL"
// timeout์๊ฐ์ ์ค์ ํด์ค๋๋ค.
private const val CONNECT_TIMEOUT_SEC = 20000L
fun getInstance(): Retrofit {
if(instance == null) {
val interceptor = HttpLoggingInterceptor()
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
val client = OkHttpClient.Builder()
.cookieJar(JavaNetCookieJar(CookieManager()))
.addInterceptor(interceptor)
.connectTimeout(CONNECT_TIMEOUT_SEC, TimeUnit.SECONDS)
.build()
instance = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build()
}
return instance!!
}
}
์์ ์ฝ๋์์ ๋ณด๋ฉด .cookieJar(JavaNetCookieJar(CookieManager()))
์ด๋ผ๋ ์ฝ๋๊ฐ ๋ณด์ด์ค ๊ฒ๋๋ค.
์ด ์ฝ๋๋ฅผ ํตํด์ ์ฟ ํค๋ฅผ ๋ฐ๊ฑฐ๋ ๋ด์ ์ ์๋๋ก retrofit์ ์ค์ ํด์ฃผ๋ ๊ฒ์
๋๋ค.
์ด๋ ๊ฒ ์ค์ ๋ง ํด์ฃผ์๋ฉด, ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ์ฟ ํค๋ฅผ ํตํด ์จ ๋ฐ์ดํฐ๋ฅผ ๋์ผ๋ก ํ์ธํ ์ ์์ ๊ฒ์ ๋๋ค.
์ฟ ํค์ ๋ด์์ ์๋ฒ์ ์ ์กํ๊ธฐ
์ด๊ฒ ์ฝ๊ฐ ์ดํด๊ฐ ์๊ฐ์๋๋ฐ, ์๋์ผ๋ก ๋ด๊น๋๋ค!
๋ฐ๋ก ๋นผ๋ด๊ฑฐ๋ ํ๋ ์์
์์ด HTTP Method(POST, GET, PUT, DELETE, PATCH) ์์
์ ์คํํด์ค ๋, ์ฟ ํค๋ก ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์ ์๋ฒ์ ์ ๋ฌํ๊ฒ ๋ฉ๋๋ค.