程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了改造为所有端点插入相同的查询参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决改造为所有端点插入相同的查询参数?

开发过程中遇到改造为所有端点插入相同的查询参数的问题如何解决?下面主要结合日常开发的经验,给出你关于改造为所有端点插入相同的查询参数的解决方法建议,希望对你解决改造为所有端点插入相同的查询参数有所启发或帮助;

我有令牌参数要插入到所有 Retrofit 服务中。 目前所有的每个请求,我插入一个 @querymap

    @GET("resources/{resourcEID}")
    suspend fun request(
        @Path("resourcEID") resID: Int,@querymap tokens: Map<String,String>
    ): Response

这样https://baseurl.com/resources?key1=value1&key2=value2

@H_672_2@map 值是常量 () 例如:key1=value1&key2=value2

现在我有多个端点(和多个服务),如何在所有端点插入查询参数?(不传入方法)。

Okhttp 好像可以插入拦截器。

解决方法

感谢@rahat 提供的链接

因此您可以按照此代码段通过 OkhttpClient 注入

import okhttp3.*
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

fun provideOkhttpClient(): OkhttpClient {
    val httpClient = OkhttpClient.builder()

    httpClient.addInterceptor(object : Interceptor {
        @Throws(IOException::class)
        override fun intercept(chain: Interceptor.Chain): Response {
            val original: request = chain.request()
            val originalhttpUrl: httpUrl = original.url
            // INTERESTinG PART to inject query parameters
            val url = originalhttpUrl.newBuilder()
                .addQueryParameter("query_key1","query_value1")
                .addQueryParameter("query_key2","query_value2")
                .build()
            // INTERESTinG PART to inject query parameters

            // request customization: add request headers
            val requestBuilder: request.builder = original.newBuilder()
                .url(url)
            val request: request = requestBuilder.build()
            return chain.proceed(request)
        }
    })

    return httpClient.build()
}


然后你连接依赖注入改造和服务

// provide your OkhttpClient
fun provideRetrofit(okhttpClient: OkhttpClient): Retrofit {
    return Retrofit.builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .client(okhttpClient)
        .build()
}

fun provideTrackservice(retrofit: Retrofit): Yourservice {
    return retrofit.create(Yourservice::class.java)
}

大佬总结

以上是大佬教程为你收集整理的改造为所有端点插入相同的查询参数全部内容,希望文章能够帮你解决改造为所有端点插入相同的查询参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: