Retrofit新手常用注解

来源:互联网 发布:win7系统网络驱动下载 编辑:程序博客网 时间:2024/05/16 18:56

看到一篇博客讲Retrofit的各种注解,比较全面可以参考一下。
http://blog.csdn.net/qiang_xi/article/details/53959437

这里只讲一下常用的几个注解。

@POST,@GET,@Query

举个例子

 //登录    @POST("api/user/auth")    Call<TeacherBean> login(@Query("username") String username,                            @Query("password") String password);

这个是简单的登陆,所以只需要提供接口URL和传递的简单参数。
我们Log一下Request:
这里写图片描述
这里可以看到这样传递的参数是
?username=nanguangtailang&password=123 的格式

@Body,@Headers

举个例子

//登录    @Headers({"Content-Type: application/json","Accept: application/json"})//需要添加头    @POST("api/user/auth")    Call<StudentBean> login(@Body RequestBody json);//传入的参数为RequestBody

由于这个接口传的是json格式的用户名和密码,所以用到了@Headers这个注解来添加了头,注明了传递的格式为json。
这里添加多个请求头,直接在后面加”,“ 就可以。
【关于怎么传递json参数上一篇博客写了可以参考】
并且使用了@Body来传递参数,@Body这个注解可以直接传递实体类。retrofit会通过convert把该实体序列化并将序列化后的结果直接作为请求体发送出去。

举个例子,由于接口需要添加验证请求头,身份验证失败将无法获取响应内容,在service中加入@Header(“Authorization”) String auth 参数。

//获取班级    @GET("/api/group")    Call<List<GroupBean>> getGroup(@Header("Authorization") String auth);

这里@Header(“Authorization”),Authorization是你需要添加进头的信息名称。添加的头为空时,不会进行添加。

@Path

举个例子,这里groupId是动态的。所以使用@Path注解,可以动态的改变接口,用法也比较简单,将groupId作为参数传进来就可以。

//获取班级里的学生    @GET("/api/group/{groupId}/students")    Call<List<StudentBean>> getStudent(@Header("Authorization") String auth, @Path("groupId") String groupId);

@Multipart ,@Part,@PartMap

举个例子,一般用来上传文件或图片
@Multipart 标记一个请求是multipart/form-data类型,需要和@POST一同使用,参数可以是 MultipartBody.Part 或 RequestBody 。
@Part 注解: 代表Multipart里的一项数据,即用${bound}分隔的内容块。
http://www.tuicool.com/articles/zQrU3u
这里详细讲了多文件上传的写法。

@Multipart@POST("iu/uploadPicture")Call<ResponseBody> uploadPicture(    @Part("description") RequestBody description,    @Part MultipartBody.Part file);

@PartMap是作用于方法的参数,以map的方式定义Multipart请求的每个part。当有多个参数的时候就可以使用PartMap组成Map后传递。注:每个值不能为空。

原创粉丝点击