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 ინტერსეპტორების კომბინაციით შესაძლებელია ვადაგასული ტოკენების ავტომატური მართვა.