Retrofit
是一个高质量高效率的HTTP请求库。Retrofit内部依赖于OkHttp,它将OKHttp底层的代码和细节都封装了起来,功能上做了更多的扩展,比如返回结果的自动解析数据模型,网络引擎的切换,拦截器…
restFul是符合rest架构风格的网络API接口,完全承认Http是用于标识资源。restFul URL是面向资源的,可以唯一标识和定位资源。 对于该URL标识的资源做何种操作是由Http方法决定的。
rest请求方法有4种,包括get,post,put,delete.分别对应获取资源,添加资源,更新资源及删除资源.
作者:埋着头向前走寻找我自己
链接:https://www.jianshu.com/p/dfe3077ddbcd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1. 注解
retrofit注解驱动型上层网络请求框架,使用注解来简化请求,大体分为以下几类:
- 用于标注网络请求方式的注解
- 标记网络请求参数的注解
- 用于标记网络请求和响应格式的注解
图片和部分文字转自https://www.songyubao.com/book/primary/network/Retrofit.html
1.1请求方法注解
注解 | 说明 |
---|---|
@GET | get请求 |
@POST | post请求 |
@PUT | put请求 |
@DELETE | delete请求 |
@PATCH | patch请求,该请求是对put请求的补充,用于更新局部资源 |
@HEAD | head请求 |
@OPTIONS | option请求 |
@HTTP | 通用注解,可以替换以上所有的注解,其拥有三个属性:method,path,hasBody |
1.2 请求头注解
既可以标记在方法上面也可以标记在参数里面
注解 | 说明 |
---|---|
@Headers | 用于添加固定请求头,可以同时添加多个。通过该注解添加的请求头不会相互覆盖,而是共同存在 |
@Header | 作为方法的参数传入,用于添加不固定值的Header,该注解会更新已有的请求头 |
1.3请求参数注解
名称 | 说明 |
---|---|
@Body | 多用于post请求发送非表单数据,比如想要以post方式传递json格式数据 |
@Filed | 多用于post请求中表单字段,Filed和FieldMap需要FormUrlEncoded结合使用 |
@FiledMap | 和@Filed作用一致,用于不确定表单参数 |
@Part | 用于表单字段,Part和PartMap与Multipart注解结合使用,适合文件上传的情况 |
@PartMap | 用于表单字段,默认接受的类型是Map,可用于实现多文件上传 |
@Path | 用于url中的占位符 |
@Query | 用于Get中指定参数 |
@QueryMap | 和Query使用类似 |
@Url | 指定请求路径 |
1.4请求和响应格式注解
名称 | 说明 |
---|---|
@FormUrlEncoded | 表示请求发送编码表单数据,每个键值对需要使用@Field注解 |
@Multipart | 表示请求发送multipart数据,需要配合使用@Part |
@Streaming | 表示响应用字节流的形式返回.如果没使用该注解,默认会把数据全部载入到内存中.该注解在在下载大文件的特别有用 |
2 开始使用
step1: 添加依赖
app/build.gradle
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0' //json转换
step2: 初始化
object FirstRetrofit {
//OkHttpClient 对象
private val okClient:OkHttpClient = OkHttpClient.Builder() //builder构建者设计模