您的位置:首页 > 理论基础 > 计算机网络

Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结

2017-12-31 17:27 471 查看

Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结

具体用法参照 Retrofit官网

Retrofit简介:

是一个基于okhttp的网络请求框架

通过注解配置网络请求参数

图片链接和图片上传

支持同步和异步网络请求

支持多种数据的解析,提供对Rxjava的支持

可拓展性好,高度封装,简洁易用

Retrofit使用介绍:

使用 Retrofit 的步骤共有7个:


- 添加Retrofit库的依赖

- 创建接收服务器返回数据的类

- 创建用于描述网络请求的接口

- 创建 Retrofit 实例

- 创建 网络请求接口实例 并 配置网络请求参数

- 发送网络请求(异步 / 同步)

- 处理数据



GET

http://192.168.43.173/api/trades

//简单的get请求(没有参数)
@GET("trades")
Call<TradesBean> getItem();


http://192.168.43.173/api/trades/{userId}

//简单的get请求(URL中带有参数)
@GET("News/{userId}")
Call<TradesBean> getItem(@Path("userId") String userId);


//简单的get请求(URL中带有两个参数)
@GET("News/{userId}")
Call<TradesBean> getItem(@Path("userId") String userId,@Path("type") String type);


http://192.168.43.173/api/trades?userId={用户id}

//参数在url问号之后
@GET("trades")
Call<TradesBean> getItem(@Query("userId") String userId);


http://192.168.43.173/api/trades?userId={用户id}&type={类型}

@GET("trades")
Call<TradesBean> getItem(@QueryMap Map<String, String> map);


@GET("trades")
Call<TradesBean> getItem(
@Query("userId") String userId,
@QueryMap Map<String, String> map);


POST

http://192.168.43.173/api/trades/{userId}

//需要补全URL,post的数据只有一条reason
@FormUrlEncoded
@POST("trades/{userId}")
Call<TradesBean> postResult(
@Path("userId") String userId,
@Field("reason") String reason;


http://192.168.43.173/api/trades/{userId}?token={token}

//需要补全URL,问号后需要加token,post的数据只有一条reason
@FormUrlEncoded
@POST("trades/{userId}")
Call<TradesBean> postResult(
@Path("userId") String userId,
@Query("token") String token,
@Field("reason") String reason;


//post一个对象
@POST("trades/{userId}")
Call<TradesBean> postResult(
@Path("userId") String userId,
@Query("token") String token,
@Body TradesBean bean;


//用不同注解post一个实体
@POST("trades/{userId}")
Call<TradesBean> postResult(
@Part("entity") TradesBean bean;


PUT

//put一个实体
@PUT("trade/carInfo/{pid}")
Call<TradesBean> putInfo(
@Path("pid") Int pid,
@Body CarInfoBean carInfoBean;)


DELETE

http://192.168.43.173/api/trades/{userId}

//补全url
@DELETE("trades/{userId}")
Call<TradesBean> deleteInfo(
@Path("userId") String userId;


http://192.168.43.173/api/trades/{userId}?token={token}

//补全url并且后面还token
@DELETE("trades/{userId}")
Call<TradesBean> deleteInfo(
@Path("userId") String userId,
@Query("token") String token;)


个人总结

Path是网址中的参数,例如:trades/{userId}

Query是问号后面的参数,例如:trades/{userId}?token={token}

QueryMap 相当于多个@Query

Field用于Post请求,提交单个数据,然后要加@FormUrlEncoded

Body相当于多个@Field,以对象的方式提交

@Streaming:用于下载大文件

@Header,@Headers、加请求头

Tip: 有不好之处请提出宝贵意见 谢谢 !!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: