You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:03:36