android Retrofit2如何处理从API服务接口传递到reflect.create()的函数注解?

m1m5dgzv  于 2023-09-29  发布在  Android
关注(0)|答案(1)|浏览(152)

我是Java编程的新手,并试图了解注解在大型库中的工作方式。
有人能给我看一下代码片段吗?在代码片段中,reflect实际上是处理来自API服务接口的函数注解,我将其作为参数传递给reflect.create方法并基于此更改其行为?我的意思是:@GET,@POST等等
我创建了接口Giphy API服务,下一个功能:

@GET("gifs/search")
    fun getSearchedGifs(
        @Query("q") searchTerm: String,
        @Query("limit") limit: Int = 50,
        @Query("offset") offset: Int = 0,
        @Query("rating") rating: String = "g",
        @Query("lang") lang: String = "en",
        @Query("bundle") bundle: String = "messaging_non_clips",
        @Query("api_key") apiKey: String = "my api key"
    ): Call<DataResult>

这个函数有@GET(“gifs/search”)表示HTTP GET请求。
然后我使用这个接口在下面的代码中创建reflect对象的示例:

val retroService = retrofit.create(GiphyApiService::class.java)

我检查了reflect.create()方法和所有文件,但没有找到我的问题的答案

polhcujo

polhcujo1#

Retrofit2使用dynamic proxy来实现接口,而不是生成代码。它使用反射解析你的方法,生成SeriveMethod方法并将它们缓存到serviceMethodCache中。
当调用接口的方法时,将调用已创建的ServiceMethod

相关问题