调用Xero Api.GetContactsAsync仅返回100条联系人记录求助
解决Xero API仅返回100条联系人的问题
Xero Contacts API默认启用分页机制,即便你没显式指定页码参数,接口也只会返回第1页的100条数据。要获取系统中全部联系人,必须通过分页遍历的方式循环请求所有页面的数据。
实现思路
- 初始化一个集合用来存储所有联系人
- 从第1页开始发起请求,逐页拉取数据
- 将每页返回的联系人追加到总集合
- 根据返回结果的分页元数据判断是否还有下一页,直到所有页面的数据都被获取
代码示例
var allContacts = new List<Contact>(); int currentPage = 1; int totalPages; do { var pageResult = await Api.GetContactsAsync( accessToken: XeroToken.AccessToken, xeroTenantId: TenantId, summaryOnly: true, searchTerm: searchPhrase, page: currentPage // 指定当前请求的页码 ); // 将当前页的联系人添加到总列表 allContacts.AddRange(pageResult.Contacts); // 从返回结果中获取总页数(Xero API会返回该分页元数据) totalPages = pageResult.TotalPages; // 页码自增,准备请求下一页 currentPage++; } while (currentPage <= totalPages); // 循环直到请求完所有页面
注意点
- 确保你的API返回结果包含
TotalPages(或类似的分页标识字段),用来判断是否还有未获取的页面 - 如果Xero API有请求频率限制,可适当添加短延迟避免触发限流
内容的提问来源于stack exchange,提问作者HPD71
相关产品推荐
相关产品推荐

