c# HttpResponseMessage - 如何从响应中获取 X-Total-Pages 并使用它来获取所有结果而无需分页
c# HttpResponseMessage - how to get X-Total-Pages from response and use it to get all results without pagination
您好,我正在使用它来调用 GitLab API:
HttpResponseMessage response = await client.GetAsync(apiPath);
在此响应中有 headers > 结果视图 > X-Total-Pages 键
value in visual
如何获取它的值?
所以我写了这个方法来从 GIT API 获取标签列表。我使用 X-Total-Pages 而不是 X-Total 并且它可以避免 API 分页结果并将其全部放入列表中:
{
List<Tag> tags = new List<Tag>();
List<Tag> one_site_of_tags = new List<Tag>();
string apiPath = WhichRepo(repository)[0] + "projects/" + appId + "/repository/tags";
HttpResponseMessage response = await client.GetAsync(apiPath);
string number_tag_sites = response.Headers.FirstOrDefault(x => x.Key == "X-Total-Pages").Value.FirstOrDefault();
for (int site = 1;
site <= Int16.Parse(number_tag_sites);
site++)
{
string apiPath2 = apiPath + "?page=" + site;
var content = await client.GetStringAsync(apiPath);
one_site_of_tags = JsonConvert.DeserializeObject<List<Tag>>(content);
tags.AddRange(one_site_of_tags);
}
return tags;
}
您好,我正在使用它来调用 GitLab API:
HttpResponseMessage response = await client.GetAsync(apiPath);
在此响应中有 headers > 结果视图 > X-Total-Pages 键
value in visual
如何获取它的值?
所以我写了这个方法来从 GIT API 获取标签列表。我使用 X-Total-Pages 而不是 X-Total 并且它可以避免 API 分页结果并将其全部放入列表中:
{
List<Tag> tags = new List<Tag>();
List<Tag> one_site_of_tags = new List<Tag>();
string apiPath = WhichRepo(repository)[0] + "projects/" + appId + "/repository/tags";
HttpResponseMessage response = await client.GetAsync(apiPath);
string number_tag_sites = response.Headers.FirstOrDefault(x => x.Key == "X-Total-Pages").Value.FirstOrDefault();
for (int site = 1;
site <= Int16.Parse(number_tag_sites);
site++)
{
string apiPath2 = apiPath + "?page=" + site;
var content = await client.GetStringAsync(apiPath);
one_site_of_tags = JsonConvert.DeserializeObject<List<Tag>>(content);
tags.AddRange(one_site_of_tags);
}
return tags;
}