Latihan 1: Filter & Sort — API

Latihan 1 dari materi Filter & Sort di API — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi endpoint GET /products supaya bisa menyaring dan mengurutkan lewat query string. Array products (Mouse, Meja, Monitor) dan baris let result = [...products]; di kode awal sudah ada, biarkan.

  1. Kalau req.query.category dikirim, saring dengan .filter(...): result = result.filter((p) => p.category === req.query.category);.
  2. Ambil sort dan order dari req.query, misalnya const { sort, order } = req.query;.
  3. Buat allowlist const allowedSort = ["name", "price"];. Kalau sort dikirim tapi gak ada di allowlist, jawab res.status(400).json({ error: "sort must be one of: name, price" }).
  4. Kalau sort ada di allowlist, urutkan dengan .sort(...) (atau .toSorted(...)): naik untuk order selain desc, turun untuk order=desc.
  5. Jawab res.json({ data: result }).

Contoh: GET /products?category=electronics&sort=price&order=desc menjawab Monitor lalu Mouse.

Tester-nya mengirim GET /products tanpa query string (harus 200), GET /products?category=electronics&sort=price&order=desc (harus 200), dan GET /products?sort=password (harus 400, password gak ada di allowlist), lalu mengecek kodemu memuat req.query (dengan req.query.namaParameter atau destructuring = req.query), kata sort, .filter(, dan .sort( atau .toSorted(. Isi hasil filter dan urutannya gak dibaca tester, tapi itu yang diajarkan pelajaran ini.

Hint