gpt4 book ai didi

kotlin - 如何为 Retrofit @Query 参数使用自定义类型?

转载 作者:行者123 更新时间:2023-12-01 04:47:23 24 4
gpt4 key购买 nike

鉴于以下 Retrofit界面:

@GET("offices")
fun getOffices(@Query("uid") uid: String,
@Query("lat") latitude: Double,
@Query("lon") longitude: Double
): Call<List<Office>>

如何用更友好的方式替换位置参数 GeoLocation类型 ...
data class GeoLocation(
val latitude: Double,
val longitude: Double
)

... 自动转换为 latlon在请求时间,例如:
@GET("offices")
fun getOffices(@Query("uid") uid: String,
@Query("location") location: GeoLocation
): Call<List<Office>>

这是改造设置:
fun createRetrofit(baseUrl: String,
okHttpClient: OkHttpClient): Retrofit {
val moshi = Moshi.Builder()
.build()

return Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.client(okHttpClient)
.build()
}

最佳答案

如果您关心用户友好的访问,您可以创建一个包装函数。这样你就不必搞乱你的改造配置

fun getOffices(uid: String, location: GeoLocation): Call<List<Office>> {
return getOfficesIf(uid, location.lat, location.lon)
}

@GET("offices")
fun getOfficesIf(@Query("uid") uid: String,
@Query("lat") latitude: Double,
@Query("lon") longitude: Double
): Call<List<Office>>

关于kotlin - 如何为 Retrofit @Query 参数使用自定义类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45448837/

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