Gérer la pagination et le tri

Dernière mise à jour: il y a 3 mois

L’API renvoie les résultats de recherche par pages. Voici comment naviguer efficacement dans de grands ensembles de résultats.

Pagination de base

POST /resources
{
  "query": "saints",
  "page": 1,
  "page_size": 20
}
Réponse:
{
  "total": 1523,
  "page": 1,
  "page_size": 20,
  "results": [ ... 20 items ... ]
}

La réponse indique qu’il y a 1 523 résultats au total et que vous consultez la page 1 avec 20 éléments.

Calculer le nombre total de pages

const totalPages = Math.ceil(response.total / response.page_size);
// 1523 / 20 = 76.15 → 77 pages

Charger la page suivante

// Page suivante simple
currentPage++;
// Ou construire l’interface de pagination
for (let page = 1; page <= totalPages; page++) {
  // Créer le bouton de page
}

Optimiser la taille des pages

Choisissez la taille des pages selon votre cas d’usage :

Petites pages (10-20 éléments) :

  • Chargement initial plus rapide

  • Adapté à une recherche côté utilisateur

  • Nécessite davantage de requêtes API

Grandes pages (50-100 éléments) :

  • Moins de requêtes API

  • Adapté au traitement par lots

  • Requêtes individuelles plus lentes

  • Le maximum est de 100 éléments

Options de tri

Populaire (par défaut) :

{
  "order": "popular"
}

Renvoie d’abord les ressources les plus téléchargées. Idéal pour afficher du contenu de qualité, éprouvé.

Récent :

{
  "order": "recent"
}

Renvoie d’abord les téléchargements les plus récents. Pratique pour découvrir du contenu nouveau.

Exemple de défilement infini

let currentPage = 1;
const pageSize = 20;
let isLoading = false;
let hasMore = true;
async function loadMore() {
  if (isLoading || !hasMore) return;
  
  isLoading = true;
  
  const response = await fetch('https://api.cathopic.com/resources', {
    method: 'POST',
    headers: {
      'x-api-key': apiKey,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      query: 'prayer',
      page: currentPage,
      page_size: pageSize,
      order: 'popular'
    })
  });
  
  const data = await response.json();
  
  // Ajouter les résultats à votre interface
  appendResults(data.results);
  
  // Vérifier s’il y a d’autres pages
  const totalPages = Math.ceil(data.total / pageSize);
  hasMore = currentPage < totalPages;
  
  currentPage++;
  isLoading = false;
}
// Déclencher au défilement
window.addEventListener('scroll', () => {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 500) {
    loadMore();
  }
});

Conseils de performance

  • Mettre en cache les résultats localement pour éviter des requêtes redondantes

  • Utiliser des tailles de pages adaptées à votre cas d’usage

  • Implémenter des états de chargement pour une meilleure expérience utilisateur

  • Envisager la virtualisation pour des listes très longues

  • Ne pas charger toutes les pages d’un coup : charger à la demande

Pour plus de détails, consultez la documentation complète à api.cathopic.com/docs.

Cet article vous a-t-il été utile ?