APIリクエストをページネーションするにはどうすればよいですか?
Last updated: June 19, 2026
L2LのDISPATCH APIでは、特に指定がない限り、Record Area GETリクエストのレコード数が2000件に制限されます。それ以上のレコードを取得する必要がある場合はどうすればよいでしょうか?この記事では、組み込みのページネーション用クエリ引数を使用して、設定された上限を超えるレコードを取得する方法を説明します。
ページネーション用クエリ引数
ページネーションには、limitとoffsetという2つのクエリ引数を使用します。
limit引数は、APIが返すレコード数を制限します。limit引数を指定しない場合、APIはデフォルトで100件のレコードを返します。
offset引数は、APIがどのレコードから開始するかを指定します。これは0から始まるカウントなので、最初のページはoffset=0となり、APIはレコード0~99を返します。1ページあたり100件のレコードに制限する場合、2ページ目の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時間に何度も追加されます。頻繁に変更されるエリアからデータを取得するには、次の手順を使用できます。
ステップ1:URLを作成する。このURLでは、マジックソートパラメータのいずれかを使用して、返すデータ量を制限します。この例では、過去1週間に作成された発送の一覧を取得します。
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クエリにフィルターや制限を設定しない場合、アプリケーションの実行中にウェブサーバーの速度が低下する可能性があります。ご注意ください。
- データセットの最後に到達すると、次のような空の
dataオブジェクトを含むレスポンスが返されます:
空のdataオブジェクトを受け取ったら、ループを終了してください。{ limit: 100, data: [], success: true, offset: 1000 }