概要

ページネーション

LSA は、複数のページ取得(プル)で大きなスナップショットのリクエストに対応するために、ページネーションをサポートしています。Google は、パラメータ maxresults を使用して特定のパートナー エンドポイントをプルし、JSON レスポンスで返される serviceProviders の最大数を制限します。パートナーは、JSON レスポンスの metadata.pagination.nextTokenParam フィールドにページネーション トークンを入力します。このトークンの値はパートナー固有のもので、次のページの URL を作成するために使用されます。最後のページでは nextTokenParam フィールドに値を入力してはなりません。最後のページには nextTokenParam フィールドはありませんが、metadata.pagination オブジェクトは常に(スキーマで必須であるため)入力されている必要があります。また、totalCount は、すべてのページにわたるサービス プロバイダの総数(レビュー フィードの場合は reviewItems)を示します。

たとえば、パートナーが完全なスナップショットに 200 のプロバイダを持っているとします。Google が URL http://www.partners.com/feeds/{version}/profile&maxresults=100 でフィードの転送を開始すると、最初のページは次の metaData を含む最初の 100 件のパートナー プロバイダを返す必要があります。

"metaData": {
     "feedCategory":"SNAPSHOT",
     "feedTimestampMicros":1532930955190163,
     "apiVersion": "v1",
     "pagination": {
        "nextTokenParam": "yre7yiesar"
     },
     "totalCount":200
}
"serviceProviders": {....}   // Contains 100 service provider objects.

Google は nextTokenParam: "yre7yiesar" を解析し、URL http:partners.com/feeds/{version}/profile&nextpagetoken=yre7yiesar&maxresults=100 で 2 回目の転送を開始します。

2 ページ目では、最後の 100 件のプロバイダが返されます。2 ページ目が最後のページでもあるため、nextTokenParam には値が入力されません(以下の metaData の例を参照)。これは、ページネーションの終了を示します。

"metaData": {
     "feedCategory":"SNAPSHOT",
     "feedTimestampMicros":1532930955190164,
     "apiVersion": "v1",
     "pagination": {},
     "totalCount":200
}
"serviceProviders": {....}

すべてのページをフェッチした後、serviceProviders オブジェクトの合計数(すべてのページ)は、最初のページ フェッチで示された totalCount と等しくなければなりません。