Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pagination avec
La pagination réduit les jeux de données volumineux à des pages plus petites et gérables. Dans REST, le générateur d’API de données (DAB) utilise le paramètre de requête pour la $afterpagination du jeu de clés, fournissant une traversée stable et efficace par le biais de résultats ordonnés. Chaque jeton marque la position du dernier enregistrement de la page précédente, ce qui permet à la requête suivante de continuer à partir de ce point. Contrairement à la pagination de décalage, la pagination du jeu de clés empêche les lignes manquantes ou dupliquées lorsque les données changent entre les requêtes.
Accédez à la version GraphQL de ce document.
Aperçu rapide
| Concept | Descriptif |
|---|---|
$after |
Jeton de continuation opaque retourné par la demande précédente |
$first |
Nombre maximal d’enregistrements à extraire par page |
nextLink |
L’URL de la page suivante inclut $after |
Pagination de base
Dans cet exemple, nous obtenons les trois premiers livres.
Requête HTTP
GET /api/books?$first=3
SQL conceptuel
SELECT TOP (3)
id,
sku_title AS title
FROM dbo.books
ORDER BY id ASC;
Exemple de réponse
{
"value": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" },
{ "id": 3, "title": "Hyperion" }
],
"nextLink": "/api/books?$first=3&$after=eyJpZCI6M30="
}
Note
Dans next-link-relative=true la configuration, nextLink contient un chemin relatif ; sinon, il s’agit d’une URL absolue.
Continuation avec $after
Le $after paramètre spécifie le jeton de continuation de la page suivante. La valeur est une chaîne encodée en base64 représentant le dernier enregistrement de la page précédente.
Avertissement
$after contient un jeton opaque qui identifie l’endroit où la dernière page s’est terminée. Traitez les jetons comme immuables et n’essayez jamais de les construire ou de les modifier.
Dans cet exemple, nous obtenons les trois livres suivants après le jeton de la dernière page.
Requête HTTP
GET /api/books?$first=3&$after=eyJpZCI6M30=
SQL conceptuel
SELECT TOP (3)
id,
sku_title AS title
FROM dbo.books
WHERE id > 3
ORDER BY id ASC;
Exemple de réponse
{
"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="
}
Fin des données
En nextLink cas d’absence, il n’y a plus d’enregistrements à extraire.
La réponse finale de la page inclut uniquement un value tableau sans .nextLink
Exemple de réponse
{
"value": [
{ "id": 7, "title": "Rendezvous with Rama" },
{ "id": 8, "title": "The Dispossessed" }
]
}
Note
Tout schéma ou modification de classement invalide les jetons émis précédemment. Les clients doivent redémarrer la pagination à partir de la première page.
Exemple de configuration
{
"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" ]
}
}
}
}
}
Voir aussi
| Concept | REST | GraphQL | Objectif |
|---|---|---|---|
| Projection | $select | Éléments | Choisir les champs à retourner |
| Filtrage | $filter | filtre | Restreindre les lignes par condition |
| Tri | $orderby | orderBy | Définir l’ordre de tri |
| Taille de la page | $first | first | Limiter le nombre d’éléments par page |
| Continuation | $after | après | Continuer à partir de la dernière page à l’aide d’un curseur |
Note
Les mots clés REST commencent par $les conventions OData suivantes.