Android开发Retrofit提升

11 篇文章 0 订阅
1 篇文章 0 订阅

前言:

一不小心,前一篇关于Retrofit的文章 https://blog.csdn.net/qq_34942689/article/details/70052972 已经是17年初次学习的时候写的了,过了这么久再来写跟Retrofit相关的文章一是为了巩固,二是现在的项目也有用到。前面大概写了Retrofit简单的使用和GET 注解,现在往深一点介绍一下
一:注解 Retrofit2.0是在okhttp的基础上进行封装的,网络请求是通过okhttp实现的。Retrofit通过注解的方式,进行网络请求描述,其注解根据功能可分为三大类
1.方法类:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、HTTP
2.标记类:FormUrlEncoded、Multipart、Streaming
3.参数类:Headers、Header、Body、Field、FieldMap、Part、PartMap、Query、QueryMap、Path、URL

1:方法类: 其中除了HTTP之外的都比较基础,HTTP可以说是其他几个的总和:其可用于替代以上 7 个,及其他扩展方法;
有 3 个属性:method、path、hasBody。基础使用为

public interface APIService{
/**
* method  请求方法,不区分大小写
* path    路径
* hasBody 是否有请求体
*/
@HTTP(method = "get", path = "new/{id}", hasBody = false)
Call<ResponseBody> getNew(@Path("id") int id);
}

2:标记类: 针对某一个函数进行标记,表示其作用是什么。表单请求:FormUrlEncoded、Multipart,标记:Streaming
1:FormUrlEncoded:请求体是from表单
2:Multipart:请求体是支持文件上传的 From 表单
3:Streaming响应体的数据用流的形式返回未使用该注解,默认会把数据全部载入内存,之后通过流获取数据也是读取内存中数据,所以返回数据较大时,需要使用该注解
3: 参数类: 针对方法或者参数进行修饰的注解
1:Headers 作用于方法
2:Header、Body、Field、FieldMap、Part、PartMap、Query、QueryMap、Path、URL 作用于方法参数(形参)

@Headers 注解设置固定的请求头,所有请求头不会相互覆盖,即使名字相同

@Header 注解动态更新请求头,匹配的参数必须提供给 @Header ,若参数值为 null ,这个头会被省略,否则,会使用参数值的 toString 方法的返回值

@Body 非表单请求体;指定一个对象作为 request body 。作用:以 Post方式 传递 自定义数据类型 给服务器注意:如果提交的是一个Map,那么作用相当于 @Field

@Field 表单字段作用:发送 Post请求 时提交请求的表单字段具体使用:与 @FormUrlEncoded 注解配合使用

@FieldMap表单字段,与 Field、FormUrlEncoded 配合;接受 Map<String, String> 类型,非 String 类型会调用 toString() 方法

@Part、@PartMappost请求时,提交请求的表单字段,与 @ Multipart注解 配合。和@Field的区别:功能相同,但携带的参数类型更加丰富,包括数据流,所以适用于 有文件上传 的场景

@Path作用:URL地址的缺省值

@Query、@QueryMap作用:用于 @GET 方法的查询参数(Query = Url 中 ‘?’ 后面的 key-value)

@Url作用:直接传入一个请求的 URL变量 用于URL设置Map 用来组合复杂的参数;

Query、QueryMap 与 Field、FieldMap 功能一样,生成的数据形式一样;

Query、QueryMap 的数据体现在 Url 上;

Field、FieldMap 的数据是请求体;

{占位符}和 PATH 尽量只用在URL的 path 部分,url 中的参数使用 Query、QueryMap 代替,保证接口的简洁;
Query、Field、Part 支持数组和实现了 Iterable 接口的类型, 如 List、Set等,方便向后台传递数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值