[Kotlin] Retrofit Cookie ์„ค์ •

Handยท2022๋…„ 7์›” 31์ผ
0

Android

๋ชฉ๋ก ๋ณด๊ธฐ
6/17

๐Ÿ’ก accessToken์˜ ๊ฒฝ์šฐ Header์— ๋‹ด์•„์„œ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ๋˜์ง€๋งŒ, refreshToken์˜ ๊ฒฝ์šฐ ์ฟ ํ‚ค์— ๋‹ด์•„์„œ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์ ์œผ๋กœ ๋” ์ข‹๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด๋•Œ ์ €๋Š” ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฒ•๊ณผ ์ฟ ํ‚ค๋ฅผ ๋‹ด๋Š” ๋ฒ•์„ ์ž˜ ๋ชฐ๋ž์–ด์„œ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

Retrofit ์„ค์ •

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) ์ž‘์—…์„ ์‹คํ–‰ํ•ด์ค„ ๋•Œ, ์ฟ ํ‚ค๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ฒจ์„œ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

profile
ํ™”์ดํŒ…!

0๊ฐœ์˜ ๋Œ“๊ธ€