Junior — Middle
Оё метавон Retrofit-ро барои идоракунии автоматии токенҳои тамомшуда ҳангоми иҷрои дархостҳои API истифода бурд?
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 дазваляе рэалізаваць аўтаматычную апрацоўку скончаных токенаў.