Pagination
LSA prend en charge la pagination pour traiter les requêtes d'un instantané volumineux dans plusieurs récupérations de page (pulls). Google extraira un point de terminaison de partenaire donné avec un paramètre maxresults
afin de limiter le nombre maximal de servicesProviders renvoyés dans la réponse JSON. Les partenaires insèrent un jeton de pagination dans le champ metadata.pagination.nextTokenParam
de la réponse JSON. La valeur de ce jeton est spécifique au partenaire et sert à construire l'URL de la page suivante. Le champ nextTokenParam
ne doit pas être renseigné pour la dernière page. Notez que l'objet metadata.pagination
doit toujours être renseigné (car cela est obligatoire dans le schéma), même si la dernière page ne comporte pas de champ nextTokenParam
.
En outre, totalCount
indique le nombre total de fournisseurs de services (ou reviewItems
dans le cas du flux d'avis) sur toutes les pages.
Prenons l'exemple d'un partenaire comptant 200 fournisseurs dans l'instantané complet. Lorsque Google lance le transfert de flux avec l'URL http://www.partners.com/feeds/{version}/profile&maxresults=100
, la première page doit renvoyer les 100 premiers fournisseurs de partenaire avec le code metaData
suivant :
"metaData": {
"feedCategory":"SNAPSHOT",
"feedTimestampMicros":1532930955190163,
"apiVersion": "v1",
"pagination": {
"nextTokenParam": "yre7yiesar"
},
"totalCount":200
}
"serviceProviders": {....} // Contains 100 service provider objects.
Google va analyser nextTokenParam: "yre7yiesar"
et initier le deuxième transfert avec l'URL : http:partners.com/feeds/{version}/profile&nextpagetoken=yre7yiesar&maxresults=100
La deuxième page doit renvoyer les 100 derniers fournisseurs. Étant donné que la deuxième page est également la dernière, nextTokenParam
ne sera pas renseigné (exemple metaData
ci-dessous), ce qui indique la fin de la pagination.
"metaData": {
"feedCategory":"SNAPSHOT",
"feedTimestampMicros":1532930955190164,
"apiVersion": "v1",
"pagination": {},
"totalCount":200
}
"serviceProviders": {....}
Notez qu'après la récupération de toutes les pages, le nombre total d'objets serviceProviders
(sur toutes les pages) doit être égal à la valeur totalCount
indiquée lors de la première extraction.