时间:2021-05-19
详解Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求)
关键词:Retrofit 动态参数、非固定参数、非必须参数
有如下场景:
请求数据时:
1. 用户未登录时,不带参数userId;
2. 登录时带上参数userId.
如下接口:
@GET("index.php?r=default/homepage")Observable<Response<Exercise>> getDataList(@Query("page") int page);@GET("index.php?r=default/homepage")Observable<Response<Exercise>> getDataList(@Query("page") int page, @Query("user_id") int userId);两个接口,区别就在于有没有『user_id』参数。
这样做,总感觉有点罗嗦,体现不出Retrofit的优越性。有没有更好的方法呢?当然有,那就是动态参数(其实很简单)。
上面的两个接口合并为一个:
@GET("index.php?r=default/homepage")Observable<Response<Exercise>> getDataList(@Query("page") int page,@Query("user_id") Integer userId);使用
登录:
APIWrapper.getInstance().getDataList(mCurrentPage, 10);未登录:
APIWrapper.getInstance().getDataList(mCurrentPage, null);Retrofit运行null值参数,如果在实际调用的时候传一个null, 系统也不会出错,会把这个参数当作没有。
对于参数名称不固定的情况也可以使用Map
@GET("applist/apps/detail")Call<ResponsePojo> getDetail(@QueryMap Map<String, String> param);当然,还可以支持固定参数与动态参数的混用
@GET("applist/apps/detail?type=detail")Call<ResponsePojo> getDetail(@Query("appid") String appid);修改Header
固定添加Header
@Headers("Accept-Encoding: application/json") @GET("applist/apps/detail?type=detail")Call<ResponsePojo> getDetail(@Query("appid") String appid);动态添加Header
@Headers("Accept-Encoding: application/json") @GET("applist/apps/detail?type=detail")Call<ResponsePojo> getDetail(@Header ("Accept-Encoding") String appid);多个Header
@Headers({ "X-Foo: Bar", "X-Ping: Pong" })@GET("applist/apps/detail?type=detail")Call<ResponsePojo> getDetail(@Header ("Accept-Encoding") String appid);固定与动态的Header的混合
@Headers("Accept-Encoding: application/json") @GET("applist/apps/detail?type=detail")Call<ResponsePojo> getDetail(@Header ("Location") String appid);以上用法同样适用于Post请求。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
react中的ajax封装实例详解代码块**opts:{'可选参数'}**method:请求方式:GET/POST,默认值:'GET';**url:发送请求的地
get请求和post请求的区别有: 1、GET通常把参数包含在URL中,而POST一般通过requestbody来传递参数。且GET产生的URL地址可以被标记
post请求的时候如果不带参数,其实作用就跟get请求一样。我们在做接口测试的时候,发现开发就全部使用的post,get的作用就被这样的post空参数请求给替代
Golang:接收GET和POST参数GET和POST是我们最常用的两种请求方式,今天讲一讲如何在golang服务中,正确接收这两种请求的参数信息。处理GET请
url:要求为String类型的参数,(默认为当前页地址)发送请求的地址。type:要求为String类型的参数,请求方式(post或get)默认为get。注意