Giriş ve Temel Kavramlar
API geliştirmelerinde kullanıcı deneyimini optimize etmek ve veri transferini hafifletmek adına pagination (sayfalandırma) yöntemi kritik bir rol oynar. Pagination, büyük veri setlerini parçalara ayırarak, her seferinde sadece belirli bir veri dilimini sunmayı sağlar. Bu sayede hem performans artar hem de istemci tarafında gereksiz yüklenmeler önlenir.
Temel Yapı ve Mantık
Bir API’de pagination genellikle iki parametre ile kontrol edilir:
page ve
limit.
limit, her sayfada gösterilecek kayıt sayısını belirlerken,
page ise hangi sayfanın istenildiğini gösterir. Örneğin, limit=10 ve page=2 ise, 11. ile 20. arasındaki kayıtlar alınır.
Veritabanı sorgusu ise şu şekilde optimize edilir:
12
SELECT * FROM tablo_adi LIMIT {limit} OFFSET {(page - 1) * limit}
Bu yapıyı PHP’de şu örnekle uygulayabiliriz:
12345678910111213
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
$offset = ($page - 1) * $limit;
// PDO veya mysqli ile sorgu örneği
$query = "SELECT * FROM tablo_adi LIMIT :limit OFFSET :offset";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$veriler = $stmt->fetchAll(PDO::FETCH_ASSOC);
Burada dikkat edilmesi gereken nokta,
page ve
limit parametrelerinin kontrol edilerek, güvenli ve hatasız çalışmasının sağlanmasıdır.
Ekstra Bilgiler ve En İyi Uygulamalar
- Toplam kayıt sayısını API’de döndürmek, istemciye toplam sayfa sayısı veya kalan kayıtlar hakkında bilgi verir.
- Sayfa sınırlarını aşmamak için page parametresini sınırlandırmak veya varsayılan değerler belirlemek iyi bir uygulamadır.
- Çok büyük datasetlerde offset yerine, ID bazlı pagination kullanmak performansı artırabilir. Örneğin, son kaydın ID’sini kullanarak sonraki veriyi almak.
Sonuç olarak, PHP tabanlı API’lerde pagination, hem kullanıcı deneyimini iyileştirir hem de sunucu performansını optimize eder. Bu yapıyı uygularken, güvenlik, performans ve kullanıcı deneyimini göz önünde bulundurmak gerekir.