Junior — Middle
API sorğuları zamanı vaxtı bitmiş tokenləri avtomatik idarə etmək üçün Retrofit istifadə oluna bilərmi?
sobes.tech Süni İntellekt
AI-dan cavab
Retrofit özü-özlüyündə vaxtı keçmiş tokenlərin avtomatik işlənməsi üçün daxili mexanizm təmin etmir (məsələn, 401 Unauthorized alınanda tokenin yenilənməsi). Ancaq, bu, OkHttp-nin xüsusi interceptoru vasitəsilə həyata keçirilə bilər, bu, cavabları ələ keçirir, xəta kodunu yoxlayır və lazım gəldikdə, tokenin yenilənməsi və yenidən sorğunun göndərilməsi loqikasını icra edir.
Tokenin yenilənməsi üçün interceptor nümunəsi:
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) { // token vaxtı keçmiş
synchronized(this) {
val newToken = tokenProvider.refreshToken() // tokeni yenilə
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // yeni token ilə sorğunu təkrarla
}
}
return response
}
}
Beləliklə, Retrofit və OkHttp interceptors ilə birlikdə işləyərək, vaxtı keçmiş tokenlərin avtomatik idarə olunması mümkündür.