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