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

在MVC中使用Retrofit 1.9,如何将路径固定数值设为动态参数?

解决Retrofit 1.9中接口动态路径参数的问题

没问题,我来帮你把接口里硬编码的固定值2改成动态可传入的参数,在Retrofit 1.9里实现这个非常简单,分两步就能搞定:

1. 修改接口定义,引入动态路径参数

你原来的接口把专辑ID写死成了2,现在我们用Retrofit的@Path注解来替换这个固定值,让它支持动态传入:

// 修改前的接口
@GET("/albums/2/photos")
void getPhotosId(Callback<String> photos);

// 修改后的接口
@GET("/albums/{albumId}/photos")
void getPhotosId(@Path("albumId") int albumId, Callback<String> photos);

简单解释下:

  • 把URL里的2替换成占位符{albumId},这个名字可以自定义,但要和后面的注解名称对应
  • 在方法参数里添加@Path("albumId") int albumId,Retrofit会自动把你传入的专辑ID值替换到URL的对应位置上

2. 修改Controller中的调用代码

现在调用接口时需要传入你想要的专辑ID参数,比如你想获取ID为5的专辑照片,调用代码就改成这样:

// 修改后的调用(这里以传入ID=5为例)
mApiManager.getPhotosApi().getPhotosId(5, new Callback<String>() {
    @Override
    public void success(String s, Response response) {
        Log.d(TAG, "JSON :: " + s);
        try {
            JSONArray array = new JSONArray(s);
            for (int i = 0; i < array.length(); i++) {
                // 你的JSON解析逻辑
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void failure(RetrofitError error) {
        // 接口请求失败的处理逻辑
    }
});

额外小提示

  • 如果你的专辑ID是字符串类型,只需要把@Path注解后的参数类型改成String即可,URL占位符不需要修改
  • 一定要保证@Path("xxx")里的名称和URL中{xxx}的名称完全一致,否则Retrofit会抛出参数匹配错误

内容的提问来源于stack exchange,提问作者jason bran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:54