Retrofit2 初见

Retrofit框架是Square公司出品的目前非常流行的网络框架。效率高,实现简单,运用注解和动态代理。极大简化了网络请求的繁琐步骤,非常适合RESTful网络请求。

一、Retrofit2 概述

  1. Retrofit框架是Square公司出品的目前非常流行的网络框架。效率高,实现简单,运用注解和动态代理。极大简化了网络请求的繁琐步骤,非常适合RESTful网络请求。

  2. Retrofit其实我们可以理解为OkHttp的加强版。 它也是一个网络加载框架。底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装。它的一个特点是包含了特别多注解,方便简化你的代码量。并且还支持很多的开源库(Retrofit + RxJava)

二、Retrofit2 的好处

  1. 超级解耦 我们在请求接口数据的时候,API接口定义和API接口使用总是相互影响,什么传参、回调等,耦合在一块。有时候我们会考虑一下怎么封装我们的代码让这两个东西不那么耦合,这个就是Retrofit的解耦目标,也是它的最大的特点。

  2. 可以配置不同HttpClient来实现网络请求,如OkHttp、HttpClient

  3. 支持同步、异步和RxJava

  4. 可以配置不同的反序列化工具来解析数据,如json、xml

  5. 请求速度快,使用非常方便灵活

三、Retrofit2配置

  1. 官网:http://square.github.io/retrofit/

  2. 依赖:implementation 'com.squareup.retrofit2:retrofit:2.5.0'

  1. OkHttp库依赖

    由于Retrofit是基于OkHttp,所以还需要添加OkHttp库依赖:

//日志拦截器
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
  1. 添加网络权限

    在AndroidManifest.xml中注册权限:

<uses-permission android:name="android.permission.INTERNET" />

四、Retrofit2注解

注解代码       请求格式
​
请求方式:
    @GET           GET请求
    @POST          POST请求
    @DELETE        DELETE请求
    @HEAD          HEAD请求
    @OPTIONS       OPTIONS请求
    @PATCH         PATCH请求
​
请求头:
    @Headers("K:V") 添加请求头,作用于方法
    @Header("K")    添加请求头,参数添加头
    @FormUrlEncoded 用表单数据提交,搭配参数使用
    @Stream         下载
    @Multipart      用文件上传提交   multipart/form-data
​
请求参数:
    @Query          替代参数值,通常是结合get请求的
    @QueryMap       替代参数值,通常是结合get请求的
    @Field          替换参数值,是结合post请求的
    @FieldMap       替换参数值,是结合post请求的
​
请求路径:
    @Path           替换路径
    @Url            路径拼接
​
请求体:
    @Body(RequestBody)  设置请求体,是结合post请求的
​
文件处理:
    @Part Multipart.Part
    @Part("key") RequestBody requestBody(单参)
    @PartMap Map<String,RequestBody> requestBodyMap(多参)
    @Body RequestBody requestBody(自定义参数)

Comment