如何在Kotlin的Retrofit GET请求中避免使用编译时常量?
解决方案
你不需要用编译时常量拼接路径,Retrofit提供了@Path注解来处理动态路径参数,直接把植物ID作为方法参数传入即可。
修改你的接口如下:
interface ViewerPlantInterface { @GET("species/details/{speciesId}") fun getPlantData( @Path("speciesId") speciesId: Int, @Query("key") key: String = ApiConstants.API_KEY_PERENUAL ): Call<ViewerPlant> }
关键说明:
- 将路径中的固定常量替换为
{speciesId}占位符,这个占位符名称要和@Path注解内的参数名完全一致 - 在方法参数中添加
@Path("speciesId") speciesId: Int,调用接口时直接传入用户选择的植物ID @Query的API Key保留默认值,调用时无需额外传参
调用示例:如果要获取ID为123的植物信息,直接调用getPlantData(123),Retrofit会自动把占位符替换为对应ID,生成正确的请求URL:https://perenual.com/api/species/details/123?key=YOUR_API_KEY
这种方式无需逐个创建端点,不管有多少种植物都能动态适配。
内容的提问来源于stack exchange,提问作者ToxicFlame427
相关产品推荐
相关产品推荐

