gpt4 book ai didi

android - 改造 2 : Custom annotations for custom interceptor

转载 作者:太空狗 更新时间:2023-10-29 13:06:08 25 4
gpt4 key购买 nike

我有用于身份验证的自定义拦截器:

@Named("authInterceptor")
@Provides
@Singleton
fun providesAuthInterceptor(preferencesManager: PreferencesManager): Interceptor {
return Interceptor { chain ->
val newBuilder = chain.request().newBuilder()
newBuilder.addHeader("access-token", preferencesManager.getAccessToken())
val request = newBuilder.build()
return@Interceptor chain.proceed(request)
}
}

但我有一些不需要授权 header 的调用。

我希望在我的服务中有:

interface NetService {
@NEEDAUTH
@GET("users")
fun getAllShops(key: String): Single<SomeResponse>

@FormUrlEncoded
@POST("users")
fun register(@Field("nickname") nickname: String): Single<SomeResponse>
}

因此,第一个调用将使用 authInterceptor,第二个将不会使用它。

最佳答案

从Retrofit 2.6.0版本开始,可以通过tag字段获取OkHttp Interceptor中的注解,如下所示:

response.request.tag(Invocation::class.java)?.method()?.getAnnotation(YourAnnotation::class.java)

然后在拦截器内部,您可以验证请求是否被注释。

改造变更日志:

New: @Tag parameter annotation for setting tags on the underlying OkHttp Request object. These can be read in CallAdapters or OkHttp Interceptors for tracing, analytics, varying behavior, and more.

https://github.com/square/retrofit/pull/2899/files

关于android - 改造 2 : Custom annotations for custom interceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47760861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com