Materi
Koleksi besar tidak dikirim sekaligus. API membaginya menjadi halaman, dan klien meminta halaman berikutnya lewat query. Dua bentuk yang sering ditemui adalah nomor halaman dengan ukuran halaman (?hal=3&per=20) dan offset dengan batas (?offset=40&limit=20). Nama parameternya tidak distandarkan; dokumentasi masing-masing API yang menetapkannya. Hubungan keduanya: offset sama dengan (hal − 1) × per, dan banyak halaman adalah total ÷ per yang dibulatkan ke atas.
Sebagian API mengirim tautan halaman di header Link. MDN mencontohkan nilai seperti <https://api.contoh/produk?hal=4>; rel="next" bersama rel="prev", rel="first", dan rel="last". Klien cukup mengikuti tautan next sampai tautan itu tidak ada lagi, yang berarti halaman terakhir sudah tercapai, tanpa harus menghitung nomor halaman sendiri.
// 45 resep, 20 per halaman
Math.ceil(45 / 20); // 3 halaman
(3 - 1) * 20; // offset halaman 3 = 40
// Filter dan pagination dalam satu query:
// GET /resep?kategori=sarapan&waktu_maks=15&hal=2&per=20Filter juga ditulis sebagai query: ?kategori=sarapan&waktu_maks=15 hanya meminta resep yang memenuhi kedua syarat. Filter dan pagination digabung dalam satu query, dan total halaman dihitung dari hasil yang sudah disaring, bukan dari seluruh koleksi. Nilai filter dikodekan persen seperti nilai query lainnya.