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 позволява автоматично управление на изтеклите токени.