作者: weiyf
时间: 2016-05-30 22:22:48

Query Parameters

查询参数是客户端向服务器传递数据的常用方法。我们可以看看下面的一个请求id=123的具体任务的API栗子。

1
https://api.example.com/tasks?id=123

这个API例子只是返回id=123单个任务的response。
Retrofit方法对查询参数进行了改进。

1
2
3
4
public interface TaskService {
@GET("/tasks")
Call<Task> getTask(@Query("id") long taskId);
}

getTask(...)请求了taskId参数,这个参数会被映射到@Query()的参数名,这个时候的参数名是id,导致了最后请求的url为

1
/task?id=<taskId>

Multiple Query Parameters

很多时候我们会使用多个同名参数。参考上一个请求一个任务的栗子,我们可以拓展出一个接受多个任务id的查询参数列表。
我们需要请求的url就像下面那样

1
https://api.example.com/tasks?id=123&id=124&id=125

我们预期返回的response是一个以url的ids=[123, 124, 125]为查询参数任务列表。
Retrofit通过提供一个ids的列表作为一个参数来执行一个含有多个同名参数的请求。Retrofit会一一对应给定的列表和多个同名参数。

1
2
3
4
public interface TaskService {
@GET("/tasks")
Call<List<Task>> getTask(@Query("id") List<Long> taskIds);
}

这就会形成我们这个章节(Multiple Query Parameters)开始那样的url。