ページネーションは、1回のリクエストで取得できる件数に上限があり、複数回リクエストが必要な場合に利用します。
利用可能な方式は以下の3種類です。
・オフセット: データの開始位置(Offset)を順に進めて指定する場合に使用
・カーソル: レスポンスに含まれるカーソル値を利用して指定する場合に使用
・リンク: レスポンスに含まれるURLを利用して指定する場合に使用
オフセット
接続先APIが「データの開始位置(Offset)」または「ページ番号(Page)」による指定に対応している場合に使用します。
💡利用できる変数
ページネーションで「オフセット」を選択すると、クエリパラメーターやヘッダーなどの設定欄で {{ __offset__ }} 変数が利用できるようになります。
■設定項目
| 項目 | 設定内容 |
|---|---|
| オフセットの初期値 | 初回リクエスト時に使用する数値(例: 0 や 1) |
| リクエスト単位で進めるオフセット数 | 1回のリクエストごとに {{ __offset__ }} に加算する数値 |
| リクエスト回数 | リクエストを繰り返す回数 |
| 継続条件のパス(JSONPath 記法) | リクエストを自動停止する条件 指定した要素がレスポンス内に存在しない、あるいは null の場合に処理を終了し、不要なリクエストを防ぎます |
■入力と実行の例1:基本設定(継続条件なし)
URL
https://api.example.com/v1/customers
クエリパラメーター
・パラメーター名: Limit, パラメーター値: 50
・パラメーター名: Offset, パラメーター値: {{ __offset__ }}
ページネーション
・ページネーション: オフセット
・オフセットの初期値: 0
・リクエスト単位で進めるオフセット数: 50
・リクエスト回数: 10
・継続条件のパス(JSONPath 記法): (空欄)
発生するリクエスト
https://api.example.com/v1/customers?Limit=50&Offset=0 https://api.example.com/v1/customers?Limit=50&Offset=50 https://api.example.com/v1/customers?Limit=50&Offset=100 ...(最大10回まで実行)
■入力と実行の例2:継続条件を設定して自動停止させる場合
URL
https://api.example.com/v1/customers
クエリパラメーター
・パラメーター名: Limit, パラメーター値: 50
・パラメーター名: Offset, パラメーター値: {{ __offset__ }}
ページネーション
・ページネーション: オフセット
・オフセットの初期値: 0
・リクエスト単位で進めるオフセット数: 50
・リクエスト回数: 5
・継続条件のパス(JSONPath 記法): $.next
($.next は例です。実際には接続先 API のレスポンス構造に合わせたパスを指定してください)
レスポンス内容
・{"next": true}
・{"next": true}
・{}( next が存在しないため停止)
発生するリクエスト
https://api.example.com/v1/customers?Limit=50&Offset=0 https://api.example.com/v1/customers?Limit=50&Offset=50 https://api.example.com/v1/customers?Limit=50&Offset=100
(3回目のレスポンスで $.next が存在しなくなったため自動停止し、4回目・5回目は送信されません)
📌 ページ番号(Page)で指定したい場合
パラメーター名を page に変更し、「オフセットの初期値: 1」「進めるオフセット数: 1」 に設定することで、ページ番号(1, 2, 3…)の指定にも対応できます。
カーソル
レスポンスに含まれる値を取得し、次のリクエストパラメータに指定する場合に使用します。
💡利用できる変数
ページネーションで「カーソル」を選択すると、クエリパラメーターやヘッダーなどの設定欄で {{ __cursor__ }} 変数が利用できるようになります。
■設定項目
| 項目 | 設定内容 |
|---|---|
| カーソルパスの取得方法 | 「レスポンスボディ」または「レスポンスヘッダー」から選択 |
| カーソルのパス(JSONPath 記法) | カーソル値が格納されているパスを JSONPath 記法で指定 指定したパスからカーソル値が取得できなくなった(null や要素なし)時点で自動停止します |
■入力と実行の例
URL
https://api.example.com/v1/customers
クエリパラメーター
・パラメーター名: Cursor, パラメーター値: {{ __cursor__ }}
ページネーション
・ページネーション: カーソル
・カーソルパスの取得方法: レスポンスボディ
・カーソルのパス(JSONPath 記法): $.args.cursor
($.args.cursor は例です。実際には接続先 API のレスポンス構造に合わせたキー名を指定してください)
レスポンス内容
・{"args":{"cursor":"1"}}
・{"args":{"cursor":"2"}}
・{"args":{}}(カーソル値が存在しないため停止)
発生するリクエスト
https://api.example.com/v1/customers?Cursor= https://api.example.com/v1/customers?Cursor=1 https://api.example.com/v1/customers?Cursor=2
(3回目のレスポンスでカーソル値が無くなったため自動停止し、4回目は送信されません)
リンク
レスポンス内に含まれる「次にリクエストすべきURL」を読み取って実行する場合に使用します。
■設定項目
| 項目 | 設定内容 |
|---|---|
| リンクのパス(JSONPath 記法) | 次のURLが格納されているパスを JSONPath 記法で指定 指定したパスに URL が存在しなくなった(null や要素なし)時点で自動停止します |
■入力と実行の例
URL
https://api.example.com/v1/customers
ページネーション
・ページネーション: リンク
・リンクのパス(JSONPath 記法): $.args.link
( $.args.link は例です。実際には接続先 API のレスポンス構造に合わせたキー名を指定してください)
レスポンス内容
・{"args":{"link":"https://api.example.com/v1/customers?page=2"}}
・{"args":{"link":"https://api.example.com/v1/customers?page=3"}}
・{"args":{}}(リンクが存在しないため停止)
実際に発生するリクエスト
https://api.example.com/v1/customers https://api.example.com/v1/customers?page=2 https://api.example.com/v1/customers?page=3
(3回目のレスポンスにリンクが含まれないため自動停止し、4回目は送信されません)