ページ分割された応答からすべてのオブジェクトを取得する (Get all objects from paginated response)
ヒント
SWAT の REST API の応答は、条件に適合するすべてのオブジェクトを常に返すとは限らず、ページ分割されます。
すべてのオブジェクトをクエリするために、顧客は応答ペイロードの meta セクションのデータを使用できます。limit は各 ページのオブジェクト数の制限であり、offset はページ番号(カウントはゼロから開始)です。
next は次のページ、previous は前のページ、total_count は、organization_code = ORGANIZATION_CODE などの条件/クエリパラメータに適合するすべてのオブジェクトの数です。
以下は、ページ分割された応答からすべての予約を取得し、シミュレーション ID でフィルタリングし、予約の ID でソートするためのコードサンプルです。
Request paginated data (bookings)
import time
import requests
import os
BASE_URL = os.environ.get("BASE_URL")
USERNAME = os.environ.get("USERNAME")
PASSWORD = os.environ.get("PASSWORD")
LIMIT = 10
SIMULATION_ID = 378
all_bookings = []
next_page = f"/api/v2/booking?limit={LIMIT}&order_by=id&simulation={SIMULATION_ID}"
while next_page:
url = f"{BASE_URL}{next_page}"
response_body = requests.get(url, auth=(USERNAME, PASSWORD)).json()
print(response_body["objects"])
all_bookings += response_body["objects"]
next_page = response_body["meta"]["next"]
if next_page is None:
break
time.sleep(0.1) # Avoid request too fast
print()
print(all_bookings)