Passer au contenu principal
Le SDK fournit des outils de pagination génériques que vous pouvez utiliser avec n’importe quel endpoint qui renvoie des réponses paginées. Les méthodes renvoient des réponses brutes ; vous les enveloppez dans un paginateur.

Pagination de base

quick-start.ts
import { Client, UserPaginator, PaginatedResponse, Schemas } from '@xdevplatform/xdk';

const client: Client = new Client({ bearerToken: 'your-bearer-token' });

// Encapsulez n'importe quel endpoint de liste avec un typage approprié
const followers: UserPaginator = new UserPaginator(
  async (token?: string): Promise<PaginatedResponse<Schemas.User>> => {
    const res = await client.users.getFollowers('<userId>', {
      maxResults: 100,
      paginationToken: token,
      userFields: ['id','name','username'],
    });
    return { 
      data: res.data ?? [], 
      meta: res.meta, 
      includes: res.includes, 
      errors: res.errors 
    };
  }
);

Pagination manuelle

import { UserPaginator, Schemas } from '@xdevplatform/xdk';

await followers.fetchNext();          // première page
while (!followers.done) {
  await followers.fetchNext();        // pages suivantes
}

const userCount: number = followers.users.length;  // tous les utilisateurs récupérés
const firstUser: Schemas.User | undefined = followers.users[0];
const nextToken: string | undefined = followers.meta?.nextToken;

Itération asynchrone

import { Schemas } from '@xdevplatform/xdk';

for await (const user of followers) {
  const typedUser: Schemas.User = user;
  console.log(typedUser.username);  // accès entièrement typé
}

Page suivante en tant que nouvelle instance

import { UserPaginator } from '@xdevplatform/xdk';

await followers.fetchNext();
if (!followers.done) {
  const page2: UserPaginator = await followers.next(); // paginator indépendant commençant à la page suivante
  await page2.fetchNext();
  console.log(page2.users.length);  // éléments de la deuxième page
}

Gestion des erreurs et limites de taux

import { UserPaginator, Schemas } from '@xdevplatform/xdk';

try {
  for await (const item of followers) {
    const user: Schemas.User = item;
    // traiter l'utilisateur...
  }
} catch (err: unknown) {
  if (followers.rateLimited) {
    console.error('Limite de taux atteinte, temporisation requise');
    // temporisation / nouvelle tentative ultérieure
  } else {
    console.error('Erreur de pagination :', err);
    throw err;
  }
}
Pour des exemples de code détaillés utilisant le XDK JavaScript/TypeScript, consultez notre dépôt GitHub d’exemples de code.