Latihan 1: CRUD API — API

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

Lengkapi CRUD untuk todos. Array todos dan GET /todos di starter sudah ada dan tetap dipakai.

  1. Tambahkan let nextId = 2; di bawah array, untuk id todo berikutnya.
  2. POST /todos: buat { id: nextId++, title: req.body.title, done: false }, push ke todos, lalu jawab res.status(201).json(todo). Header Location boleh ditambahkan dengan res.set("Location", "/todos/" + todo.id), tapi gak dinilai.
  3. PUT /todos/:id: cari todo-nya dengan Number(req.params.id). Kalau ketemu, ganti seluruh isinya: { id, title: req.body.title, done: req.body.done === true }. PUT mengganti, bukan menggabungkan, jadi done yang gak dikirim kembali jadi false. Lalu jawab todo-nya (status 200). Kalau gak ada, jawab res.status(404).json({ error: "Todo not found" }).
  4. DELETE /todos/:id: kalau ketemu, hapus dengan splice lalu jawab res.status(204).send(). Kalau gak ada, jawab 404.

Tester-nya mengecek: GET /todos menjawab 200, POST /todos menjawab 201, PUT /todos/1 menjawab 200, PUT /todos/999 menjawab 404, DELETE /todos/999 menjawab 404, dan DELETE /todos/1 menjawab 204. Tester juga mengirim PUT /todos/1 dengan {"title": "Belajar API", "done": true}, lalu PUT /todos/1 dengan {"title": "Baru"} saja, dan mengecek GET /todos berisi persis [{"id": 1, "title": "Baru", "done": false}]. Kodemu juga harus memuat app.post(, app.put(, app.delete(, status(201) dan status(404).

Hint