Pagination
Disponible avecProResearch
Les routes qui peuvent renvoyer beaucoup de données les renvoient par pages. L'API utilise trois
types de pagination, et chaque route en utilise un. Le type est le même partout où il apparaît, et
la réponse indique toujours s'il y a une suite. La recherche n'est pas paginée : elle renvoie les
limit meilleurs résultats.
Pagination par décalage : le texte d'un document
GET /documents/:id renvoie le texte d'un document par morceaux d'au plus maxChars caractères
(12 000 par défaut, 20 000 au maximum). Passez le nextOffset d'une réponse comme offset dans la
suivante, jusqu'à ce que nextOffset soit null.
async function readDocument(id) {
let offset = 0;
let text = '';
while (offset !== null) {
const res = await fetch(
`https://api.readsira.com/rest/v2/documents/${id}?offset=${offset}&maxChars=20000`,
{ headers: { Authorization: `Bearer ${process.env.READSIRA_KEY}` } },
);
const { data } = await res.json();
text += data.text;
offset = data.nextOffset;
}
return text;
}
La réponse contient aussi totalChars (la longueur totale) et truncated, qui vaut true tant
qu'il reste du texte.
Pagination par curseur : passages, transcriptions, projets
Un curseur est un signet que l'API vous donne. Ne le construisez pas vous-même. Renvoyez-le tel quel.
| Route | Curseur à envoyer | D'où vient le suivant | Limite |
|---|---|---|---|
GET /documents/:id/chunks | cursor (un nombre) | nextCursor | limit, 100 au maximum |
GET /documents/:id/transcript | cursor (une chaîne) | nextCursor | limit, 500 au maximum |
GET /projects | cursor (une chaîne) | nextCursor | limit, 50 au maximum |
Le premier appel n'a pas de curseur. Continuez d'appeler avec le dernier nextCursor jusqu'à ce
qu'il soit null ou absent.
curl -G "https://api.readsira.com/rest/v2/projects" \
-H "Authorization: Bearer $READSIRA_KEY" \
--data-urlencode "limit=20"
La réponse contient la page de projets et, quand il y en a davantage, nextCursor (abrégé ici) :
{
"success": true,
"data": {
"projects": ["..."],
"nextCursor": "VALUE_FROM_THE_ANSWER"
}
}
La page suivante renvoie cette valeur sous le nom cursor :
curl -G "https://api.readsira.com/rest/v2/projects" \
-H "Authorization: Bearer $READSIRA_KEY" \
--data-urlencode "limit=20" \
--data-urlencode "cursor=$NEXT_CURSOR"
Numéros de page : marque-pages et collections
Les anciennes routes /api/v1/bookmarks et /api/v1/collections utilisent page (à partir de 1) et
limit (100 au maximum, 20 par défaut). La liste des marque-pages répond avec bookmarks, total,
page, limit et hasMore. Demandez la page suivante tant que hasMore vaut true.
curl -G "https://api.readsira.com/api/v1/bookmarks" \
-H "Authorization: Bearer $READSIRA_KEY" \
-d page=2 -d limit=100
Conseils
- Chaque page est une requête et compte dans vos limites. Utilisez la plus grande
limitque la route autorise quand vous avez besoin de tout. - Les pages se lisent l'une après l'autre. Ne les envoyez pas en parallèle avec le même curseur.
- Arrêtez-vous quand le curseur ou
nextOffsetvautnull, ou quandhasMorevautfalse.