Retrofit原理

Retrofit是一个基于OKhttp的网络请求框架封装,提供简洁易用的API和注解配置。其常用注解包括@Header、@GET、@POST等。通过建造者模式创建Retrofit实例,配置baseUrl等信息,然后通过create()方法获取动态代理对象。当调用接口方法时,Retrofit解析注解,生成ServiceMethod并缓存,进一步转化为Request对象,结合CallAdapter处理响应。execute()和enqueue()分别对应同步和异步请求,实际网络请求由OKhttp完成。
摘要由CSDN通过智能技术生成

1、简介

Retrofit 是基于OKhttp网络请求框架的二次封装,本质是OKhttp。所以说Retrofit并不是一个网络框架、它只是一个网络框架封装。
Retrofit优点:API设计简洁易用、注解化配置高度解耦、支持多种解析器、支持Rxjava。

2、常用到的注解

@Hearder : 请求头
@GET、@POST:确定请求方式
@Path:请求URL的字符替代
@Query:要传递的参数
@QueryMap:包含多个@Query注解参数
@Body:添加实体类对象
@FormUrlEncoded:URL编码
@Multipart :用于表单的请求

3、用法

创建接口请求类型与参数:
新建DataModel类和Cinterface接口
@GET("这个里边放链接")
public Call<DataModel> login(@Query("username") String username, @Query("pwd") String pwd);

创建Retrofit对象、设置数据解析器
Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(“配置域名”)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) //rxjava回调库
            .addConverterFactory(GsonConverterFactory.create())  //解析类型
            .build();

4、简单看了一下源码了解了一下它的原理

首先它通过建造者模式构建一个Retrofit实例,配置baseUrl,callAdapterFactory(RxJava回调库),converterFactory(解析接口的类型我一般通的是GsonConverterFactory),在通过Retrofit对象的create(Class service)方法返回一个Service的动态代理对象,调用代理的invoke方法的时候,会将method进行解析,解析我们在接口里面配置的各种注解,最后构造成ServiceMethod对象,并将结果缓存起来,下次再次调用就不用解析了。ServiceMethod对象可以生成Request对象,所以将ServiceMethod对象注入到OkHttpCall,然后通过callAdapter转化为用户希望得到的返回对象,默认是直接返回Call对象。
再调用execute或者enqueue方法,前者是同步请求,后者是异步请求,再方法里面会调用Okhttp的网络请求方法。接下来就是okhttp的一些原理的okhttp我就先不聊了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值