Android项目多服务端接口适配的方法有哪些

  介绍

小编给大家分享一下安卓项目多服务端接口适配的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!


Android项目如果是多服务端接口时,一般怎么弄呢?


把服务器地址放在接口头中,然后通过拦截器来动态修改请求地址而实现的。除了默认服务器的接口,其它都要加一个标题,有点麻烦。看起来也不爽,不简洁。

/* * * * * * * * * * * * * * * * * * * * * * * * * *服务器B * * * * * * * * * * * * * * * * * * * * * * * * * * * */@Headers(“主持人:SERVER_HOST_B"美元)
  @ get(“用户/loginWithScanCode")
  乐趣bMethod1 (@Query (“id") id: Int): Observable
  }


定义多个类,每个类定义一套服务接口。然后分别实例化为多个对象,再使用准确的对象来调用接口。这种方法运行效率是最高的,但是在开发时,可能无法快速知道接口归属与哪个服务,需要查看代码才能准确知晓,可以说是少了代码提示能力。

界面ApiAllInOne {/* * * * * * * * * * * * * * * * * * * * * * * * * *服务器* * * * * * * * * * * * * * * * * * * * * * * * * * * */@ get(“用户/loginWithScanCode")
  乐趣aMethod1 (@Query (“id") id: Int): Observable/* * * * * * * * * * * * * * * * * * * * * * * * * *服务器B * * * * * * * * * * * * * * * * * * * * * * * * * * * */@ get(“用户/loginWithScanCode")
  乐趣bMethod1 (@Query (“id") id: Int): Observable
  }
  
  const val SERVER_HOST_A=癶ttps://www.a.com/"
  const val SERVER_HOST_B=癶ttps://www.b.com/"
  乐趣getApi(改造:改造,主持人:字符串):ApiAllInOne {
  返回retrofit.newBuilder ()
  .baseUrl(主机).build ()
  共创(ApiAllInOne:: class.java)
  }
  
  乐趣showNomalUseCase(改造:改造){
  SERVER_HOST_A val阿皮亚=getApi(改造)//另存为单个实例重复使用
  apiA.aMethod1 (1) .subscribe ()
  apiA.bMethod1 (1) .subscribe()//无效的使用,但没有编译错误
  
  SERVER_HOST_B val apiB=getApi(改造)
  apiB.bMethod1 (1) .subscribe ()
  apiB.aMethod1 (1) .subscribe()//无效的使用,但没有编译错误
  }


当然有了,而且超方便!

<强>定义接口

(建议)在一个KT文件中定义所有接口,方便查找和维护。

接口ApiHolder:阿皮亚,ApiB
  
  @BaseUrl (“https://www.a.com/")
  接口阿皮亚{
  @ get(“用户/loginWithScanCode")
  有趣的methodA (@Query (“id") id: Int): Observable
  }
  
  @BaseUrl (“https://www.b.com/")
  接口ApiB {
  @ get(“用户/loginWithScanCode")
  乐趣methodB (@Query (“id") id: Int): Observable
  }

<>强建工具类

一般都需要个工具类的,方便配置拦截器等。如果没有自定义的需求,也可以直接实例化来用。

可以重写invokeApi方法,全局给每个可见设定线程。

类ApiUtil: ApiHolderUtil (ApiHolder::类){
  伴星{
  val apiUtil=apiUtil ()
  val api=apiUtil.api
  }
  
  覆盖有趣invokeApi (api:任何方法:方法、参数:Array<*祝辞,# 63;):任何{
  val可见=超级。invokeApi (api方法,args) Observable<*比;
  返回observable.subscribeOn (Schedulers.io ())
  .observeOn (AndroidSchedulers.mainThread ())
  }
  }

<>强动态更新服务地址

还可以动态更新服务地址,比如实现测试服务和正式服务间切换。

Android项目多服务端接口适配的方法有哪些