Sobes.tech
Junior — Middle

API მოთხოვნების დროს ვადაგასული ტოკენების ავტომატური მართვისთვის შეიძლება გამოიყენოს Retrofit?

sobes.tech AI

პასუხი AI-სგან

Retrofit თავისთავად არ უზრუნველყოფს ვადაგასული ტოკენების ავტომატურ დამუშავების მექანიზმს (მაგალითად, ტოკენის განახლება 401 Unauthorized პასუხის მიღებისას). თუმცა, ეს შეიძლება განხორციელდეს OkHttp-ის პერსონალიზებული ინტერსეპტორის გამოყენებით, რომელიც იჭერს პასუხებს, ამოწმებს შეცდომის კოდს და საჭიროების შემთხვევაში ახორციელებს ტოკენის განახლებას და მოთხოვნის ხელახლა გაგზავნას.

ტოკენის განახლების ინტერსეპტორის გამოყენების მაგალითი:

class AuthInterceptor(private val tokenProvider: TokenProvider) : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        var request = chain.request().newBuilder()
            .addHeader("Authorization", "Bearer ${tokenProvider.getAccessToken()}")
            .build()

        val response = chain.proceed(request)

        if (response.code == 401) { // ვადაგასული ტოკენი
            synchronized(this) {
                val newToken = tokenProvider.refreshToken() // ტოკენის განახლება
                request = chain.request().newBuilder()
                    .header("Authorization", "Bearer $newToken")
                    .build()
                return chain.proceed(request) // მოთხოვნის ხელახლა გაგზავნა ახალი ტოკენით
            }
        }

        return response
    }
}

ამ გზით, Retrofit და OkHttp ინტერსეპტორების კომბინაციით შესაძლებელია ვადაგასული ტოკენების ავტომატური მართვა.