最近在慢慢的啃retrofit 源码,从中学习了很多,包括retrofit中包含设计模式,可以参考Retrofit源码探索中使用到的设计模式
这篇文章主要记录学习retrofit 中的细节部分
CallAdapterFractory
- callAdapterFactory是用来将retrofit 中默认的OkhttpCall(网络请求类)转化为我们在接口层中定义的返回类型对象。例如Observable<T>、Flowable<T>等。
- 每个请求中可以添加多个callAdapterFactory,通过retrofit.builde.addCallAdapterFactory()
- retrofit 中转化网络请求类,是从Adapter.FactoryList中遍历,调用get()方法,尝试去创建一个Call.Factory对象,如果为空,遍历下一个,知道找到合适的。
ConvertAdapterFactory
- convertAdapterFactory是retrofit中用来将response返回的数据转化为我们在接口中定义的返回类型
- 同样可以添加多个convertAdapterFactory ,通过retrofit.build.addConverterFactory()
- convert和callAdapter一样也是有顺序的,添加的时候需要注意顺序
添加顺序注意:
想GsonCallAdapter这种比较全面的可以放在最后添加,应为retrofit 查找转换器的时候是从前到位查找的。
retrofit 注解中的url
我们在使用retrofit 的时候,必须现在build中设置baseurl,否则报错,其次,在请求接口的时候,在注解中设置url地址,有如下几种方式:
注意: baseurl在retrofit2.0中必须以/结尾
- 注解中的url地址是全地址,默认请求的就是url中的全地址
- 注解中的url不以/开头,请求的地址就是 baseUrl+注解中的地址
网友评论