Materi
Di sisi klien, pagination berarti meminta halaman demi halaman, seperti di kelas HTTP dan API Web. Di sisi server, handler membaca query, menyaring data, menghitung total, lalu memotong satu halaman. Semua nilai query datang sebagai teks: dokumentasi Node.js menunjukkan request.url berisi path dan query sekaligus, misalnya /produk?hal=2&per=20, yang dipecah dengan new URL menjadi path dan pasangan nama–nilai berupa teks. Di latihan, req.query sudah berupa objek teks hasil pemecahan itu.
Mengubah teks menjadi angka perlu hati-hati. MDN mencatat Number() mengubah teks kosong atau berisi spasi saja menjadi 0, membuang spasi di tepi, dan menghasilkan NaN bila gagal; jadi ?hal= menjadi 0, bukan galat. Periksa bentuknya lebih dulu, misalnya dengan pola /^[0-9]+$/, baru ubah menjadi angka. Parameter yang tidak dikirim memakai nilai bawaan, ukuran halaman diberi batas atas supaya satu permintaan tidak menarik seluruh katalog, dan nilai yang bentuknya salah dijawab 400.
// GET /ulasan?bintang=5&hal=2&per=3, 8 ulasan berbintang 5
const cocok = ulasan.filter((u) => u.bintang === 5); // saring dulu
const total = cocok.length; // 8
const data = cocok.slice((2 - 1) * 3, 2 * 3); // ulasan ke-4 sampai ke-6
const jumlahHalaman = Math.ceil(total / 3); // 3Urutannya tetap: saring, hitung total dari hasil saringan, baru potong. slice tidak mengubah larik asalnya dan indeks akhirnya tidak ikut diambil (MDN). Di API Mentari, halaman di luar jangkauan dijawab 200 dengan data kosong, sehingga klien tahu ia sudah melewati halaman terakhir.