Retrofit 2 – 动态URL

2025/03/30

1. 概述

在这个简短的教程中,我们将学习如何在Retrofit 2中创建动态URL。

2. @Url注解

在某些情况下,我们需要在运行时在应用程序中使用动态URL。Retrofit库的第2个版本引入了@Url注解,允许我们为端点传递完整的URL:

@GET
Call<ResponseBody> reposList(@Url String url);

该注解基于OkHttp库中的HttpUrl类,使用<a href= “”>像页面上的链接一样解析URL地址。使用@Url参数时,我们不需要在@GET注解中指定地址。

@Url参数替换了服务实现中的baseUrl:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .addConverterFactory(GsonConverterFactory.create()).build();

重要的是,如果我们要使用@Url注解,则必须将其设置为服务方法中的第一个参数。

3. 路径参数

如果我们知道基本URL的某些部分是不变的,但不知道它的扩展名或将使用的参数数量,则可以使用@Path注解和encoded标志

@GET("{fullUrl}")
Call<List<Contributor>> contributorsList(@Path(value = "fullUrl", encoded = true) String fullUrl);

这样,所有的“/”就不会被替换为%2F,就像我们没有使用编码参数一样。但是,传递的地址中的所有字符“?”仍然会被替换为%3F。

4. 总结

Retrofit库允许我们在应用程序运行时仅使用@Url注解轻松提供动态URL。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章