Retrofit网络请求参数注解 @Query 和@Path的区别

        在研究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);

很多情况下我们可能会使用第二种情况,但也需要了解第一种样式的使用,仅作备份,以防忘记!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章