Bis*_*uit 5 api-key retrofit2 rx-java2
我想知道将 APIKEY 放入所有 REST 请求中的最佳方法,而不必将其添加到请求的参数中。
目前我只接到了几个电话,但我正在尝试进一步了解。
@GET(".")
fun getSearch(@Query("s") text: String, @Query("apikey") APIKEY: String) : Observable<ResponseSearch>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法不在每次调用的变量中包含 APIKEY
可以,但更好的解决方案是使用Okhttp 拦截器
这是一个例子:
class TokenInterceptor(private val preferencesStorage: SharedPreferencesStorage) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var original = chain.request()
val token = preferencesStorage.getAccessToken()
val url = original.url().newBuilder().addQueryParameter("apikey", token).build()
original = original.newBuilder().url(url).build()
return chain.proceed(original)
}
}
Run Code Online (Sandbox Code Playgroud)
您还应该将 TokenInterceptor 添加到您的 Okhttp 客户端构建器中
val client = OkHttpClient.Builder()
.addInterceptor(TokenInterceptor(SharedPreferencesStorage()))
.build()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2807 次 |
| 最近记录: |