Android —— Retrofit 请求注解分析

Android 请求方式无非就是 POST、PUT、DELETE以及HEAD 这几种,
Retrofit 中的注解:
1. GET ———-查找资源(查)
2. POST ——–修改资源(改)
3. PUT ———-上传文件(增)
4. DELETE —-删除文件(删)
5. HEAD——–只请求页面的首部

@QueryMap、@Path、@Body、@FormUrlEncoded/@Field、@Header/@Headers。我们来看一下他们的区别:

@Query(GET请求):

用于在url后拼接上参数,例如:

@GET("book/search")
Call<Book> getSearchBook(@Query("q") String name);//name由调用者传入

相当于:

@GET("book/search?q=name")
Call<Book> getSearchBook();
@QueryMap(GET请求):

当然如果入参比较多,就可以把它们都放在Map中,例如:

@GET("book/search")
Call<Book> getSearchBook(@QueryMap Map<String, String> options);
@Path(GET请求):

用于替换url中某个字段,例如:

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

像这种请求接口,在group和user之间有个不确定的id值需要传入,就可以这种方法。我们把待定的值字段用{}括起来,当然 {}里的名字不一定就是id,可以任取,但需和@Path后括号里的名字一样。如果在user后面还需要传入参数的话,就可以用Query拼接上,比如:

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

当我们调用这个方法时,假设我们groupId传入1,sort传入“2”,那么它拼接成的url就是group/1/users?sort=2,当然最后请求的话还会加上前面的baseUrl。

@Body(POST请求):

可以指定一个对象作为HTTP请求体,比如:

@POST("users/new")
Call<User> createUser(@Body User user);

它会把我们传入的User实体类转换为用于传输的HTTP请求体,进行网络请求。

@Field(POST请求):

用于传送表单数据:

@FormUrlEncoded
@POST("user/edit")
Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last);

注意开头必须多加上@FormUrlEncoded这句注释,不然会报错。表单自然是有多组键值对组成,这里的first_name就是键,而具体传入的first就是值啦。

@Header/@Headers(POST请求):

用于添加请求头部:

@GET("user")
Call<User> getUser(@Header("Authorization") String authorization)

表示将头部Authorization属性设置为你传入的authorization;当然你还可以用@Headers表示,作用是一样的比如:

@Headers("Cache-Control: max-age=640000")
@GET("user")
Call<User> getUser()

当然你可以多个设置:

@Headers({
    "Accept: application/vnd.github.v3.full+json",
    "User-Agent: Retrofit-Sample-App"
})
@GET("user")
Call<User> getUser()

好了,这样我们就把上面这个RetrofitService 接口类解释的差不多了。

原文地址 教你一步步搭建MVP+Retrofit+RxJava网络请求框架

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值