Mari bangun REST API lengkap untuk mengelola data todo.
Full CRUD API:
import express from "express";
const app = express();
app.use(express.json());
let todos = [
{ id: 1, title: "Belajar Express", done: false },
{ id: 2, title: "Buat API", done: false },
];
let nextId = 3;
// LIST — GET /todos
app.get("/todos", (req, res) => {
res.json(todos);
});
// DETAIL — GET /todos/:id
app.get("/todos/:id", (req, res) => {
const todo = todos.find(t => t.id === parseInt(req.params.id));
if (!todo) return res.status(404).json({ error: "Not found" });
res.json(todo);
});
// CREATE — POST /todos
app.post("/todos", (req, res) => {
const { title } = req.body;
if (!title) return res.status(400).json({ error: "Title required" });
const todo = { id: nextId++, title, done: false };
todos.push(todo);
res.status(201).json(todo);
});
// UPDATE — PUT /todos/:id
app.put("/todos/:id", (req, res) => {
const todo = todos.find(t => t.id === parseInt(req.params.id));
if (!todo) return res.status(404).json({ error: "Not found" });
if (req.body.title) todo.title = req.body.title;
if (req.body.done !== undefined) todo.done = req.body.done;
res.json(todo);
});
// DELETE — DELETE /todos/:id
app.delete("/todos/:id", (req, res) => {
const index = todos.findIndex(t => t.id === parseInt(req.params.id));
if (index === -1) return res.status(404).json({ error: "Not found" });
todos.splice(index, 1);
res.status(204).send();
});
Status codes yang digunakan:
200— OK (default)201— Created (setelah POST berhasil)204— No Content (setelah DELETE berhasil)400— Bad Request (input tidak valid)404— Not Found (resource tidak ditemukan)