Lewati ke konten utama

Pagination di API Platform

Pagination adalah fitur penting dalam REST API untuk membatasi jumlah data yang ditampilkan dalam satu kali permintaan (request), serta meningkatkan performa dan efisiensi pengambilan data.

API Platform mendukung pagination otomatis dan fleksibel.


1. Konfigurasi Default

Secara default, pagination sudah diaktifkan di API Platform. Untuk mengonfigurasinya, buka file config/packages/api_platform.yaml:

api_platform:
collection:
pagination:
enabled: true
client_enabled: true
client_items_per_page: true
items_per_page: 10
maximum_items_per_page: 100

2. Parameter Query Pagination

API Platform mendukung parameter pagination melalui query string:

ParameterDeskripsi
pageHalaman yang ingin ditampilkan
itemsPerPageJumlah item per halaman
paginationtrue atau false, untuk aktif/nonaktif
Contoh:
GET /api/products?page=2&itemsPerPage=5

3. Response JSON Contoh

{
"@context": "/api/contexts/Product",
"@id": "/api/products",
"@type": "hydra:Collection",
"hydra:member": [
{ "id": 6, "name": "Produk 6" },
{ "id": 7, "name": "Produk 7" }
],
"hydra:totalItems": 15,
"hydra:view": {
"@id": "/api/products?page=2",
"@type": "hydra:PartialCollectionView",
"hydra:first": "/api/products?page=1",
"hydra:last": "/api/products?page=3",
"hydra:previous": "/api/products?page=1",
"hydra:next": "/api/products?page=3"
}
}

4. Pagination Per Resource

Pagination juga bisa dikustom per entitas:

use ApiPlatform\Metadata\ApiResource;

#[ApiResource(
paginationEnabled: true,
paginationItemsPerPage: 5,
paginationMaximumItemsPerPage: 50
)]
class Product
{
// ...
}

5. Nonaktifkan Pagination

Secara global:

api_platform:
collection:
pagination:
enabled: false

Atau per resource:

#[ApiResource(paginationEnabled: false)]
class Product
{
// ...
}

6. Tips Tambahan

  • Gunakan hydra:totalItems untuk mendapatkan total seluruh data.

  • Link hydra:view dapat digunakan untuk navigasi halaman.

  • Gunakan pagination bersama filter untuk hasil lebih optimal.

7. Contoh Kombinasi dengan Filter

GET /api/products?page=1&itemsPerPage=10&price[gte]=100

Kesimpulan ✅ Pagination aktif secara default ✅ Dapat dikontrol lewat konfigurasi global atau per resource ✅ Dukungan parameter query: page, itemsPerPage, pagination ✅ Format response mengikuti spesifikasi Hydra

📘 Pagination sangat berguna untuk REST API berskala besar dan membantu frontend dalam melakukan paginasi data dengan efisien.