Retrofit——API声明

来源:互联网 发布:linux string 编辑:程序博客网 时间:2024/06/18 17:17

今天讲Retrofit的API声明,我们已经知道,Retrofit主要是用注解方式去表征网络请求的各种参数类型的。今天,我们要具体看下,Retrofit是如何实现Path修改、GET、POST、请求体、Header等网络请求的。


在上一节的那个接口抽象方法中,注解表征了一个请求将被如何处理。


请求方法

每个抽象方法必须有一个HTTP注解,提供请求方法和相对URL路径。有五种自带的注解,GET、POST、PUT、DELETE、HEAD。相对url路径资源在注解中指定,如下:

@GET("users/list")
你也可以在url中指定查询参数,如下:

@GET("users/list?sort=desc")


URL操作

一个请求url能动态更新,通过在抽象方法中使用占位块(replacement blocks)和参数。一个占位块是一个被“{}”包围着的字母和数字的字符串,一个对应的参数必须用“@Path”作为注解,注解后的括号里的字符和url路径的“{}”中的要保持一致。如下:

@GET("group/{id}/users")Call<List<User>> groupList(@Path("id") int groupId);

查询参数也可以增加,如下:

@GET("group/{id}/users")Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort);
一个复杂的查询参数集合,可以使用Map,如下:

@GET("group/{id}/users")Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);


请求体

使用@Body注解,你可以指定一个对象作为一个HTTP请求体,如下:

@POST("users/new")Call<User> createUser(@Body User user);
这个对象也将转换为请求参数,使用一个在Retrofit实例中指定的converter。如果没有添加converter,就只能使用RequestBody了。


今天先讲到这里,每天接着讲这一节。





原创粉丝点击