如何对 API 请求进行分页?
Last updated: June 19, 2026
L2L 的调度 API 将记录区域 GET 请求限制为 2000 条记录,除非另有说明。如果您需要获取超过这个数量的记录,该怎么办?本文将向您展示如何使用内置的分页查询参数来获取超出此限制的记录。
分页查询参数
分页需要使用两个查询参数:limit 和 offset。
limit 参数限制 API 返回的记录数量。如果您未指定 limit 参数,API 将默认返回 100 条记录。
offset 参数告诉 API 从哪条记录开始。这是一个从零开始的计数,因此第一页的 offset=0,API 将返回第 0-99 条记录。如果您将每页结果限制为 100 条记录,则第二页的 offset 将为 100。
示例
以下是一个使用 Python 2.7 获取多条记录的示例脚本。请特别注意 while 循环。
import requests
finished = False
machines = []
url = 'https://example.leading2lean.com/api/1.0/machines/'
apikey = 'fakeapikey'
limit = 2000
site = 1
while not finished:
resp = requests.get(url, {'auth': apikey, 'site': site, 'limit': limit, 'offset': len(machines)}, timeout=60)
if resp.ok:
resp_js = resp.json()
if not resp_js['success']:
raise Exception("api call failed with error: %s" % resp_js['error'])
machines.extend(resp_js['data'])
if len(resp_js['data']) < limit:
finished = True
else:
raise Exception("Failed request, error: %d" % resp.status_code)API 请求分页的其他方法
通常,您可能需要从 L2L 获取数据,而新数据会定期添加。例如,每小时会多次添加调度。您可以使用以下流程从经常变化的区域提取数据:
步骤 1:构建您的 URL。此 URL 应使用一个神奇的排序参数来限制您返回的数据量。在本例中,我想获取过去一周创建的调度列表:
https://[customer].leading2lean.com/api/1.0/dispatches?auth=[auth]&site=1&created__gt=[one week ago]&order_by=-id如您所见,结果按 id 降序排列。
步骤 2:添加新的神奇排序参数。由于我是按 id 排序的,因此我将获取最后一个结果中的 id,并将其附加到 URL 中,如下所示:
https://[customer].leading2lean.com/api/1.0/dispatches?auth=[auth]&site=1&created__gt=[one week ago]&order_by=-id&id__gt=[last id]步骤 3:继续操作,直到获得 0 条结果。当 L2L 返回的结果为空时,表示您已检索到所有记录,没有遗漏。
提示
- 我们建议您编写代码,仅从 API 中检索所需的记录。您可以在 API 请求中使用其他筛选条件,并将记录总数限制在合理范围内。如果您不筛选并限制 API 查询,您的 Web 服务器可能会在应用程序运行期间变慢。请谨慎操作。
- 当您到达数据集末尾时,您将收到一个
data对象为空的响应,如下所示:
当您获得一个空的 data 对象时,应结束循环。{ limit: 100, data: [], success: true, offset: 1000 }