Retrofit2.0使用总结

* 请求方式有:
 * @Get
 * @post
 * @PUT
 * @DELETE
 * @HEAD
 * @OPTIONS
 * @HTTP (可用于替换上面所有的请求方式)
 * 

*

* 标记请求方法有: * @FormUrlEncoded 表示请求是一个Form表单 * 每个键值对需要用@Filed来注解键名,随后的对象需要提供值。 *

*

* @Multipart 表示请求体是一个支持文件上传的Form表单 * 每个键值对需要用@Part来注解键名,随后的对象需要提供值。 *

*

* @Streaming 表示返回的数据以流的形式返回,适用于返回数据较大的场景 * (如果没有该注解,默认把数据全部载入内存,之后获取数据也是从内存中读取) *

*

* 网络请求参数如下: * @Headers 添加请求头,固定参数 * @Body 以 Post方式 传递 自定义数据类型 给服务器,也可以传递Map,相当于@Field,需要做处理 * FormBody.Builder builder = new FormBody.Builder(); * builder.add("key","value"); *

*

*

* @Field以及@FieldMap 传递单个参数或者一个Map集合 *

*

*

* @Part & @PartMap,提交文件,注意Map添加参数是,值为responseBody *

*

*

* @Query以及@QueryMap 用法与@Field相同 *

*

*

* @Path 访问的API是:https://api.github.com/users/{user}/repos * 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用) *

*

*

* @Url 当有URL注解时,@GET传入的URL就可以省略,当GET、POST...HTTP等方法中没有设置Url时,则必须使用 {@link Url}提供 * * */ public interface RetrofitApi { /** * method:网络请求的方法(区分大小写) * path:网络请求地址路径 * hasBody:是否有请求体 */ @HTTP(method = "GET", path = "blog/id=8", hasBody = true) Observable testHttp(@Body LoginRequest request); @POST("/post") Observable login(@Body LoginRequest request); /** * 添加请求头,不固定形式,参数需要传值 * * @param plat 参数值 * @return 访问的API是:https://api.github.com/users/{user}/repos * 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用) */ @POST("users/{user}/rew") @FormUrlEncoded Observable getUser(@Path("user") String user, @Header("plat") String plat, @Field("userName") String name, @Field("age") int age); /** * 添加Map集合请求参数 * * @param map 当有URL注解时,@GET传入的URL就可以省略,当GET、POST...HTTP等方法中没有设置Url时,则必须使用 {@link Url}提供 * @return */ @POST @FormUrlEncoded Observable testFileMap(@Url String url, @FieldMap Map map); /** * @param name {@link RequestBody}、{@link okhttp3.MultipartBody.Part} 、任意类型 * @param age 除 {@link okhttp3.MultipartBody.Part} 以外, * 其它类型都必须带上表单字段({@link okhttp3.MultipartBody.Part} 中已经包含了表单字段的信息), * @param file * @return */ @POST("/asd") @Multipart Observable testPart(@Part("name") RequestBody name, @Part("age") RequestBody age, @Part MultipartBody.Part file); /** * 用于 @GET 方法的查询参数(Query = Url 中 ‘?’ 后面的 key-value) * url = http://www.println.net/?cate=android,其中,Query = cate * * @param cate * @return */ @GET Observable useQuery(@Query("cate") String cate); /** * 表单形式上传文件,添加参数到RequestBody * * @param map * @param file * @return */ @POST("asds") @Multipart Observable testPartMap(@PartMap Map map, @Part MultipartBody.Part file); /** * 添加固定参数的请求头 * * @param request * @param name * @return */ @POST("/post") @Headers("plat: 1") @FormUrlEncoded Observable testForm(@Body LoginRequest request, @Field("userName") String name); @POST Observable register(@Body RegisterRequest request); @POST @Multipart Observable testMuilt(@Body RegisterRequest request, @Part("name") RequestBody name, @Part MultipartBody.Part file); @POST Observable getBookInfo(@Body BookInfoRequest request); @POST Observable getBookComment(@Body BookCommentRequest request);

你可能感兴趣的:(Retrofit2.0使用总结)