使用 Podio API for .Net 获取所有 Podio 项目集合

Fetching all Podio item collection using Podio API for .Net

我正在使用跑道提供的.Net API。默认情况下,它每次请求仅获取 20 个项目。如果我们将过滤器限制设置为 500(这是 podio 的最大值),我可以为所有项目获取 500 组的项目。但在这里我面临如何迭代这些项目集合的问题 0 到 500 501 至 1000 1001等等…… 我正在获取跑道中的项目总数 下面是我的代码

            int totalItemCount = 1750; //For this example
            int totIterations = totalItemCount / 500;
            int offsetValue = 0;
            for (int i = 0; i < totIterations + 1; i++)
            {
                filterOption.Limit = 500;
                filterOption.Offset = offsetValue;
                filterOption.Remember = true;
                filteredContent = await _Podio.ItemService.FilterItems(appId, filterOption);
                //Some Code here
                offsetValue += 500;
            }

这在每次迭代时都获取相同的项目。 预计在前 500 个之后,它应该从 501 开始到下一个 500 个项目...... 任何人都可以提供帮助,因为 .Net podio 上的文档非常有限 API

请尝试这样的操作:

int limit = 1;
int offset = 500;
var items_1 = client.ItemService.FilterItems(appId, limit, offset);
var items_2 = client.ItemService.FilterItems(appId, limit, offset + 1);

并验证 items_1items_2 实际上是不同的项目。

FilterItems 方法的来源在这里:https://github.com/podio/podio-dotnet/blob/master/Source/Podio%20.NET/Services/ItemService.cs#L280

如果您要获取所有物品,可以这样做:

int limit = 500;
int offset = 0;
bool continueOperation = true;
var allItems = new List<Item>();

do{
    PodioCollection<Item> filteredItems = await _podioClient.ItemService.FilterItems(appId, limit, offset);
    offset = offset + limit;
    allItems.AddRange(filteredItems.Items);

    if (filteredItems == null || filteredItems.Filtered <= offset)
    {
        continueOperation = false;
    }
} while (continueOperation);