【发布时间】:2020-01-13 21:49:31
【问题描述】:
我是 API 领域的新手,需要获取我们所有用户的列表(总共 400 个)。最初我只能获得 30 个用户,但在阅读 API 说明后,我发现 30 是默认值。我将页面值设置为 100,这是最大值,我可以在我的数据网格中显示 100 个用户。但是,我想获得所有 400 个用户。据我了解,我需要设置分页来获取其他 300 个,但不知道如何实现这一点。如果有人可以查看我的代码并提供建议,我将不胜感激。下面的代码返回一个联系人列表,我将其显示在一个 winforms 数据网格中。
public static async Task<List<Contact>> LoadContacts(string filter)
{
string apiPath = ApiHelper.ApiClient.BaseAddress.ToString();
switch (filter)
{
case "Deleted":
apiPath += "?state=deleted;per_page=100";
break;
default:
apiPath += "?per_page=100";
break;
}
using (HttpResponseMessage response = await ApiHelper.ApiClient.GetAsync(apiPath))
{
Console.WriteLine("Response StatusCode: " + (int)response.StatusCode);
if (response.IsSuccessStatusCode)
{
List<Contact> emp = await response.Content.ReadAsAsync<List<Contact>>();
return emp;
}
else
{
throw new Exception(response.ReasonPhrase);
}
}
}
【问题讨论】:
-
您使用的是哪个 API?任何默认值都将特定于该特定 API 的实现,限制和任何其他操作参数也是如此。如果不了解 API 的详细信息,就不可能知道如何操作 API,而且很可能它是您的应用程序特有的东西,因此您也必须共享该代码。在此过程中,您应该自己寻找这些细节。在此过程中,您或许可以回答自己的问题。
-
好吧,一方面,您使用分号 (
;) 分隔参数,而文档显示与号 (&),这对于查询字符串是正常的。 -
我一直在阅读文档,并通过我自己的研究得到了这个结果。第 9 节说,要滚动页面,请将页面参数添加到 url。页码从 1 开始并且不应超过 10 - 这是否意味着我必须设置一个循环并不断请求页面,直到没有更多页面?
-
根据文档,这似乎是您必须要做的。页面大小上限为 100,页码上限为 10,将您的 10 个请求的总数限制为 1000 个。