CRUD API dengan Express — Node.js

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

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:

Yang akan kamu pelajari