ページネーション
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 と等しくなければなりません。