在研究retrofit时,发现了一个问题,就是传参数的方式有很多种,我们需要根据后台接口的不同来确定对应的传参方式。
首先我们初始化Retrofit:
String BASE_URL = "http://192.168.0.1/api/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.build();
后台给出的接口一般会有两种形式:
1、样式1(URL中有参数):
http://192.168.0.1/api/data/1
http://192.168.0.1/api/data/{数据id}
http://102.10.10.132/api/data/1/页码1
http://102.10.10.132/api/data/{数据id}/{页码}
这种情况可以理解为参数和接口地址在一起,而我们在使用Retrofit去请求的时候,参数注解就需要使用@Path,具体代码如下:
@GET("data/{sid}/{page}")
Call<DataBean> getItem(@Path("sid") String sid, @Path("page") String page);
2、样式2(参数在URL问号之后):
http://192.168.0.1/api/data?sid=1
http://192.168.0.1/api/data?sid={数据id}
http://102.10.10.132/api/data?sid=1&page=1
http://102.10.10.132/api/data?sid={数据id}&page={页码}
这种情况就是很常见的请求地址了,就是参数放在?后面,且多个参数用&隔开,我们在使用Retrofit去请求的时候,参数注解就需要使用@Query,具体代码如下:
@GET("data")
Call<DataBean> getItem(@Query("sid") String sid, @Query("page") String page);
很多情况下我们可能会使用第二种情况,但也需要了解第一种样式的使用,仅作备份,以防忘记!