文章预览
点击 关注 公众号,“ 技术干货 ” 及时达! 前言 众所周知, Retrofit 的 baseUrl 在创建实例的时候就设定好了,之后不允许直接修改。但是我们实际项目中会存在需要改变 baseUrl 的情况,比如聚合了多个平台的数据会使用到多个 baseUrl ,还有做海外 app 要切换到更近的服务器等场景,这就得动态切换 baseUrl 。 目前主要有三种解决方案,但是都存在一些缺陷。 现有方案 使用多个 Retrofit 对象 通过 Retrofit#newBuilder() 函数可以拷贝出一个同样配置的 Retrofit 对象去修改 baseUrl 。 val otherRetrofit = retrofit.newBuilder() .baseUrl("xxxxx") .build() val api = otherRetrofit.create () 创建多个仅仅是 baseUrl 不一样的 Retrofit 对象太浪费资源,个人不建议这么来使用。 使用 @Url 注解 官方提供了 @Url 注解,修饰的参数只传入 paths ,比如 /xxx/xxxx ,就会拼上默认的 baseUrl 。
………………………………