wso2 - 使用分页从 Web API 接收所有结果
问题描述
我需要使用 Web API 连接到服务器并接收所有条目。然而,服务器最多只提供 100 个数据条目(分页),并提示如何获取下一批。使用 WSO2 EI 实现这一点的正确方法是什么?
在这里使用常规调解员似乎对我不起作用。我尝试使用 Script 调解器并在 Ruby 中执行请求(或者更准确地说是 WSO2 正在使用的 JRuby 包) - 但我需要使用 Ruby Gem 来处理 JSON(这似乎不适用于我)。
WSO2 EI 是否也可以使用 Ruby Gems?或者谁能想到我的问题的另一种解决方案(这不一定涉及使用 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 将选择接下来的 2 个条目。如果没有新条目cursor.after
是null
.
解决方案
我会尝试一个调用 api 并存储结果的序列,如果 cursor after 不为 null,则调用自身。在第二次迭代中,它将使用游标值调用 api,将结果添加到前一个结果等,直到 cursor.after 为空。
另一种选择是嵌套克隆,每次 cursor.after 不为空时,您都会在其中不断创建新克隆。然后使用聚合中介来收集所有响应。
推荐阅读
- python - Flask App 不能用单个浏览器处理超过 6 个请求
- angular - 搜索对象数组的 Ngif 条件
- r - 为什么我在 r 中得到两个不同的 R^2,哪一个是正确的?
- geoserver - 生成 Geoserver 地图切片
- javascript - 如何在谷歌应用脚本中发布“所有”复选框值?
- android - 如何在 Android Q 上断开网络连接?
- java - 如何在java中比较两个对象(具有未排序的值)
- windows - 如何保存我所有 Active Directory 的用户 c:\
- python-3.x - 我想使用具有下拉值的 selenium webdriver 从站点下载多个文件(Python)
- c# - DataContext.Refresh 需要很长时间