Penomoran halaman offset mudah dipahami, tetapi kumpulan data yang berubah dapat menggeser baris antar permintaan. Kursor dapat menunjuk ke posisi pengurutan stabil terakhir dan mengurangi hasil duplikat atau hilang selama traversal.

Gunakan pemesanan deterministik

  • Urutkan berdasarkan bidang yang stabil dan unik, atau tambahkan pemecah ikatan unik seperti ID.
  • Encode nilai pengurutan yang terakhir terlihat ke dalam kursor buram daripada menerima ekspresi database yang sewenang-wenang.
  • Kembalikan kursor berikutnya hanya ketika halaman lain tersedia, dan tentukan arti hasil yang kosong.

Jaga agar kursor tetap tercakup dan dibatasi

Validasi kursor, ikat ke filter yang relevan dan konteks otorisasi, dan tetapkan ukuran halaman maksimum. Perlakukan itu sebagai status navigasi, bukan sebagai rahasia atau pemberian izin.

Uji penyisipan dan penghapusan antara permintaan, kursor berulang, dan input kursor tidak valid. Penomoran halaman kursor meningkatkan konsistensi traversal, namun tidak membuat snapshot beku kecuali API secara eksplisit menyediakannya.