retroFit的注解方法

1、什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架

2.为什么使用Retrofit框架 性能好,处理快,使用简单,Retrofit 是安卓上流行的HTTP Client库之一

默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强。

默认使用Gson解析 

二、配置Retrofit2.0   //配置retrofit2.0

compile 'com.squareup.retrofit2:retrofit:+'
compile 'com.squareup.retrofit2:converter-gson:+'
//配置支持Rxjava2
compile 'com.squareup.retrofit2:adapter-rxjava2:+'
compile 'io.reactivex.rxjava2:rxjava:+'
compile 'io.reactivex.rxjava2:rxandroid:+'

1.构造Retrofit
***baseUrl:****

1. 默认的服务器地址,Retrofit在进行请求一个接口时会根


1.构造Retrofit
***baseUrl:****
1. 默认的服务器地址,Retrofit在进行请求一个接口时会根据你填写的
baseurl+方法名 去请求。
****addConverterFactory:****
添加返回数据的解析方式,Retrofit支持多种格式的解析,xml,json,
jackson,Moshi,Protobuf,wire等,添加对这些数据格式的支持同样需要在

Gradle中进行依赖。这些依赖Square公司同样提供了支持。

****CallAdapter:****
Retrofit会将网络请求的接口以回调的方式返回,我们通常会得到一个叫做
Call<类型>的结果,如果我们需要返回其他的结果,例如RxJava形式的结果,需
要对RxJava做支持。如果不需要特殊类型的返回结果,我们是不需要配置的。
****Client:****
通过该方法我们可以添加自己定制的OkHttp。

三、创建接口 声明API   四、Retrofit各个注解的含义及作用
------------------------------------ GET注解
用于发送一个get请求 GET注解一般必须添加相对路径或绝对路径或者全路径,如果不想在 GET注解后添加请求路径,则可以在方法的第一个参数中用@Url注解添加请 求路径
 Url注解:
作用于方法参数 用于添加请求的接口地址
示例: @GET Call list(@Url String url);
Path注解:
作用于方法的参数
在URL路径段中替换指定的参数值。使用String.valueOf()和URL编码 将值转换为字符串。 使值不可为用该注解定义的参数的空 参数值默认使用URL编码
示例: //默认使用URL编码 @GET("/user/{name}") Call encoded(@Path("name") String name); //不使用URL编码 @GET("/user/{name}") Call notEncoded(@Path(value="name", encoded=true) String name);
 Query注解:
作用于方法的参数 用于添加查询参数,即请求参数 参数值通过String.valueOf()转换为String并进行URL编码 使用该注解定义的参数,参数值可以为空,为空时,忽略该值,当传入一个 List或array时,为每个非空item拼接请求键值对,所有的键是统一的,如:  name=张三&name=李四&name=王五.
示例: @GET("/list") Call list(@Query("page") int page); @GET("/list") Call list(@Query("category") String category); //传入一个数组 @GET("/list") Call list(@Query("category") String... categories); //不进行URL编码 @GET("/search") Call list(@Query(value="foo", encoded=true) String foo);
 QueryMap注解:
作用于方法的参数 以map的形式添加查询参数,即请求参数
参数的键和值都通过String.valueOf()转换为String格式 map的键和值默认进行URL编码 map中每一项的键和值都不能为空,否则抛出 IllegalArgumentException异常
示例: //使用默认URL编码 @GET("/search") Call list(@QueryMap Map filters); //不使用默认URL编码 @GET("/search") Call list(@QueryMap(encoded=true) Map filters); --------------------------------------- POST注解:
用于发送一个POST请求 POST注解一般必须添加相对路径或绝对路径或者全路径,如果不想在 POST注解后添加请求路径,则可以在方法的第一个参数中用@Url注解添加 请求路径


 FormUrlEncoded注解:
用于修饰Field注解和FieldMap注解 使用该注解,表示请求正文将使用表单网址编码。字段应该声明为参 数,并用@Field注释或FieldMap注释。使用FormUrlEncoded注解的请 求将具”application / x-www-form-urlencoded” MIME类型
Field注解
作用于方法的参数 用于发送一个表单请求
 @FormUrlEncoded   @POST("/") Call example(@Field("name") String name,@Field("occupation") String occupation);
 //固定或可变数组    @FormUrlEncoded    @POST("/list")    Call example(@Field("name") String... names);  FieldMap注解:
作用于方法的参数 用于发送一个表单请求 map中每一项的键和值都不能为空,否则抛出 IllegalArgumentException异常
  @FormUrlEncoded    @POST("/things")    Call things(@FieldMap Map fields);
 Header注解:
作用于方法的参数,用于添加请求头 使用该注解定义的请求头可以为空,当为空时,会自动忽略,当传入一个 List或array时,为拼接每个非空的item的值到请求头中. 具有相同名称的请求头不会相互覆盖,而是会照样添加到请求头中
示例:  @GET("/")    Call foo(@Header("Accept-Language") String lang);
1 2
 HeaderMap注解:
作用于方法的参数,用于添加请求头
以map的方式添加多个请求头,map中的key为请求头的名称,value为 请求头的值,且value使用String.valueOf()统一转换为String类型, map中每一项的键和值都不能为空,否则抛出 IllegalArgumentException异常
示例:   @GET("/search")    void list(@HeaderMap Map headers);
   //map    Map headers = new HashMap()<>;    headers.put("Accept","text/plain");    headers.put("Accept-Charset", "utf-8");
 Headers注解:
作用于方法,用于添加一个或多个请求头 具有相同名称的请求头不会相互覆盖,而是会照样添加到请求头中
示例: //添加一个请求头  @Headers("Cache-Control: max-age=640000")  @GET("/")  ... //添加多个请求头 @Headers({ "X-Foo: Bar",            "X-Ping: Pong"         })    @GET("/")    ...


retroFit的注解方法_第1张图片


retroFit的注解方法_第2张图片


retroFit的注解方法_第3张图片

retroFit的注解方法_第4张图片


你可能感兴趣的:(retroFit的注解方法)