次の方法で共有


REST での $after による改ページ

改ページにより、大きなデータセットが小さく管理しやすいページに絞り込まれます。 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 規則に従って、 $で始まります。