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:
Parameter | Deskripsi |
---|---|
page | Halaman yang ingin ditampilkan |
itemsPerPage | Jumlah item per halaman |
pagination | true 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.