使用分页从 Web API 接收所有结果

Receiving all results from a Web API with pagination

我需要使用 Web API 连接到服务器并接收所有条目。然而,服务器最多只提供 100 个数据条目(分页)以及如何获取下一批的提示。使用 WSO2 EI 实现这一点的正确方法是什么?

在这里使用常规调解员似乎对我不起作用。我尝试使用脚本调解器并在 Ruby 中执行请求(或者更准确地说是 WSO2 正在使用的 JRuby 包)——但我需要使用 Ruby Gem 用于处理 JSON(这似乎对我不起作用)。

WSO2 EI 也可以使用 Ruby Gem 吗? 或者谁能​​想到我的问题的另一种解决方案(不一定涉及使用 Java 编写自定义调解器)?


API 响应示例(一次限制为 2 个条目)

{
  "result": {
    "data": [
        {
            "id": 1,
            "title": "Test"
        },
        {
            "id": 2,
            "title": "Test 2"
        }
    ],
    "cursor": {
        "limit": "2",
        "after": "2",
        "before": null
    }
  }
}

cursor.after是本次查询中最后一条数据的ID。使用参数 after=2 调用 HTTP URL 将 select 接下来的 2 个条目。如果没有新条目 cursor.afternull

我会尝试调用 api 并存储结果的序列,如果 cursor after 不为 null,则调用自身。在第二次迭代中,它将使用游标值调用 api,将结果添加到先前的结果等,直到 cursor.after 为空。

另一种选择是嵌套克隆,每次 cursor.after 不为空时,您都会不断创建新的克隆。然后使用聚合中介来收集所有响应。