详解Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求)

详解Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求),第1张

概述详解Retrofit动态参数(非固定参数、非必须参数)(Get、Post请求)关键词:Retrofit动态参数、非固定参数、非必须参数

详解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请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:为Retrofit统一添加post请求的默认参数的方法Retrofit2.0 实现图文(参数+图片)上传方法总结Retrofit2.0 公共参数(固定参数) 总结

以上是内存溢出为你收集整理的详解Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求)全部内容,希望文章能够帮你解决详解Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存