码迷,mamicode.com
首页 > Windows程序 > 详细

Retrofit 2.0 接口API服务代码

时间:2016-04-26 00:30:18      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

 

 

接口API服务代码

接口定义有以下的配置方式, 取决于接口的参数需求(使用注解方式标注请求模板接口)

 

// 可以直接在URL中指定参数
@GET("version/android/2.3.0?order=desc")
Call<VersionInfoDTO> loadVersionInfo();

// 设置POST请求体
@POST("users/new")
void createUser(@Body User user, Callback<User> cb);

// 上传POST表单数据
@FormUrlEncoded
@POST("user/edit")
User updateUser(@Field("name") String name, @Field("age") int age);

// 多文件/数据上传
@Multipart
@PUT("/user/photo")
Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description);

//给当前请求添加Headers头信息
@Headers({
        "Accept: application/vnd.github.v3.full+json",
        "User-Agent: Retrofit-Sample-App"
})
@GET("version/android/2.3.0")
Call<VersionInfoDTO> loadVersionInfo();

 

如果你不需要任何类型安全的响应,你可以把返回值指定为

Call<Response>

 

API注解

所有请求都需要一个请求方法注解并以相对URL路径作为参数。内建了5个注解:

Retrofit的Annotation包含请求方法相关的@GET、@POST、@HEAD、@PUT、@DELETA、@PATCH

 

而且这些方法的参数也可以有特殊的注解

的@Path、@Field、@Multipart

 


 

 

@Path(“XXX”) 使用方法: {}中的表示待定参数,路径中的参数使用@Path(“XXX”)

 

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

 

// 可以添加占位符
@GET("news/before/{dateStr}") // 表示{dateStr}由函数参数决定
Call<NewsBeforeDTO> getNewsBefore(@Path("dateStr") String date); // dateStr要一致

 


 

 

@Query用于查询参数如同”?”作用

 

// 可以添加参数
@GET("version/android/2.3.0")
Call<VersionInfoDTO> loadVersionInfo(@Query("order") String order);

 

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

 


 

 

@QueryMap用于有多个查询参数

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

 


 

 

@Body请求体(主要是用于@POST方式)

 


 

 

@Field注明表单中的键,方法的参数就是值了

 

 


 

 

@FormUrlEncoded注明是表单提交 

如果我们希望提交 form-encoded name/value ,我们可以使用@FormUrlEncoded 与 @FieldMap注解:

@FormUrlEncoded
@POST("/some/endpoint")
Call<SomeResponse> someEndpoint(@FieldMap Map<String, String> names);

 


 

 

@Multipart 如果你要提交多参数表单数据(multi-part form data),可以使用@Multipart与@Part注解:

@Multipart
@POST("/some/endpoint")
Call<SomeResponse> someEndpoint(@Part("name1") String name1, @Part("name2") String name2)

 

 

 


 

 

@Headers(“”)请求头设置

@Headers("Cache-Control: max-age=640000")
@GET("/widget/list")
Call<Widget> widgetList();

 

备注:可以通过 Interceptor  去为每个请求都设置相同的请求头

 

Retrofit 2.0 接口API服务代码

标签:

原文地址:http://www.cnblogs.com/zhiqixue/p/5433098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!