API Pagination (Cursor vs Offset)
Architecture 🟡 MidDefinition
Offset : skip/limit simple mais instable sur les donnees qui changent. Cursor : basee sur un marqueur stable, performante a grande echelle.
Analogie
Offset : 'page 5 d'un livre' (instable si on ajoute des pages). Cursor : 'lire a partir du marque-page' (toujours fiable).
Exemple de code
// Offset: GET /users?page=3&limit=20
// Cursor: GET /users?after=eyJpZCI6MTAwfQ&limit=20
const cursor = Buffer.from(JSON.stringify({ id: lastId })).toString('base64');
Cas d'usage
Offset pour les petits datasets avec UI de pages. Cursor pour les feeds infinis et les APIs a fort volume.
Anti-pattern
Offset sur des millions de lignes — performances catastrophiques avec OFFSET 100000.