REST での
改ページにより、大きなデータセットが小さく管理しやすいページに絞り込まれます。 REST では、データ API ビルダー (DAB) はキーセットの改ページ位置付けに $after クエリ パラメーターを使用し、順序付けられた結果を通じて安定した効率的なトラバーサルを提供します。 各トークンは、前のページの最後のレコードの位置をマークし、その時点から次の要求を続行できるようにします。 オフセットの改ページ位置付けとは異なり、キーセットの改ページにより、要求間でデータが変更されたときに行の欠落や重複が防止されます。
このドキュメントの GraphQL バージョンに移動します。
チラッ
| 概念 | Description |
|---|---|
$after |
前の要求から返された不透明な継続トークン |
$first |
ページごとにフェッチするレコードの最大数 |
nextLink |
次のページの URL には次のものが含まれます $after |
基本的な改ページ位置
この例では、最初の 3 冊の書籍を取得しています。
HTTP 要求
GET /api/books?$first=3
概念 SQL
SELECT TOP (3)
id,
sku_title AS title
FROM dbo.books
ORDER BY id ASC;
サンプル応答
{
"value": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" },
{ "id": 3, "title": "Hyperion" }
],
"nextLink": "/api/books?$first=3&$after=eyJpZCI6M30="
}
注
構成 next-link-relative=true 場合、 nextLink には相対パスが含まれます。それ以外の場合は絶対 URL です。
継続 $after
$after パラメーターは、次のページの継続トークンを指定します。 値は、前のページの最後のレコードを表す base64 でエンコードされた文字列です。
Warnung
$after は、最後のページが終了した場所を識別する不透明なトークンを含みます。 トークンを不変として扱い、トークンの構築や変更を試みることはありません。
この例では、最後のページのトークンの後に次の 3 つの書籍を取得しています。
HTTP 要求
GET /api/books?$first=3&$after=eyJpZCI6M30=
概念 SQL
SELECT TOP (3)
id,
sku_title AS title
FROM dbo.books
WHERE id > 3
ORDER BY id ASC;
サンプル応答
{
"value": [
{ "id": 4, "title": "I, Robot" },
{ "id": 5, "title": "The Left Hand of Darkness" },
{ "id": 6, "title": "The Martian" }
],
"nextLink": "/api/books?$first=3&$after=eyJpZCI6Nn0="
}
データの末尾
nextLinkが存在しない場合、フェッチするレコードはこれ以上ありません。
最後のページ応答には、nextLinkのないvalue配列のみが含まれます。
サンプル応答
{
"value": [
{ "id": 7, "title": "Rendezvous with Rama" },
{ "id": 8, "title": "The Dispossessed" }
]
}
注
スキーマまたは順序の変更は、以前に発行されたトークンを無効にします。 クライアントは、最初のページから改ページを再開する必要があります。
構成例
{
"runtime": {
"pagination": {
"default-page-size": 100,
"max-page-size": 100000
}
},
"entities": {
"Book": {
"source": {
"type": "table",
"object": "dbo.books"
},
"mappings": {
"sku_title": "title",
"sku_price": "price"
},
"relationships": {
"book_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
}
},
"Category": {
"source": {
"type": "table",
"object": "dbo.categories"
},
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
こちらも参照ください
| 概念 | REST | GraphQL | 目的 |
|---|---|---|---|
| Projection | $select | 品目 | 返すフィールドを選択する |
| フィルタリング | $filter | フィルター | 条件で行を制限する |
| 並べ替え | $orderby | orderBy | 並べ替え順序を定義する |
| ページ サイズ | $first | first | ページあたりのアイテム数を制限する |
| 継続 | $after | 後 | カーソルを使用して最後のページから続行する |
注
REST キーワードは、OData 規則に従って、 $で始まります。