Pagination — API

Pagination membagi data besar menjadi halaman-halaman kecil. Query parameter pagination: GET /products?page=2&limit=10 Response dengan metadata: { "data": [...1

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,
    }
  });
});

Yang akan kamu pelajari