Android Retrofit:如何为接口传递动态参数movieId
Retrofit动态传入movieId的解决方案
要在Retrofit的GET请求中动态传入movieId,你需要通过路径占位符+@Path注解来实现,具体步骤如下:
1. 修改接口定义
把@GET注解中的固定路径替换为包含{movieId}占位符的路径,同时在方法参数中用@Path注解绑定该占位符:
interface MovieRecommendationsApiInterface { // 将xxx替换为实际路径中需要插入movieId的位置,比如"/movies/{movieId}/recommendations" @GET("/movies/{movieId}/recommendations") fun getRecommendationsList(@Path("movieId") movieId: Int): Call<MovieResponse> }
关键说明:
{movieId}是路径中的占位符,对应实际请求URL中会被替换的部分@Path("movieId")用来将方法参数movieId的值绑定到路径中的占位符上,参数名要和占位符完全一致- 参数类型可根据实际需求选择(比如
Int或String)
2. 在MainActivity中调用接口
初始化Retrofit实例后,调用接口方法时直接传入具体的movieId值即可:
// 假设已完成Retrofit实例初始化 val apiService = retrofit.create(MovieRecommendationsApiInterface::class.java) // 传入具体的movieId,示例为123 val call = apiService.getRecommendationsList(123) call.enqueue(object : Callback<MovieResponse> { override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) { // 处理成功响应逻辑 } override fun onFailure(call: Call<MovieResponse>, t: Throwable) { // 处理请求失败逻辑 } })
补充:查询参数场景
如果movieId是作为URL的查询参数(格式如xxxxxxx?movieId=123),则改用@Query注解:
interface MovieRecommendationsApiInterface { @GET("xxxxxxx") fun getRecommendationsList(@Query("movieId") movieId: Int): Call<MovieResponse> }
内容的提问来源于stack exchange,提问作者Mark George
相关产品推荐
相关产品推荐

