Pagination membagi data besar menjadi halaman-halaman kecil.
Query parameter pagination:
GET /products?page=2&limit=10
Response dengan metadata:
{
"data": [...10 products...],
"meta": {
"page": 2,
"limit": 10,
"total": 95,
"totalPages": 10,
"hasNext": true,
"hasPrev": true
}
}
Implementasi:
app.get("/products", (req, res) => {
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 10;
const offset = (page - 1) * limit;
const products = db.prepare(
"SELECT * FROM products LIMIT ? OFFSET ?"
).all(limit, offset);
const total = db.prepare(
"SELECT COUNT(*) as count FROM products"
).get().count;
res.json({
data: products,
meta: {
page,
limit,
total,
totalPages: Math.ceil(total / limit),
hasNext: page * limit < total,
hasPrev: page > 1,
}
});
});