API yang sebenarnya menyimpan data di database, bukan di memori.
Menggunakan SQL dari Express:
import Database from "better-sqlite3"; // atau knex, prisma, dll
const db = new Database("app.db");
// Setup tabel
db.exec(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
)
`);
// GET /users — ambil semua
app.get("/users", (req, res) => {
const users = db.prepare("SELECT * FROM users").all();
res.json(users);
});
// GET /users/:id — ambil satu
app.get("/users/:id", (req, res) => {
const user = db.prepare("SELECT * FROM users WHERE id = ?").get(req.params.id);
if (!user) return res.status(404).json({ error: "Not found" });
res.json(user);
});
// POST /users — buat baru
app.post("/users", (req, res) => {
const { name, email } = req.body;
const result = db.prepare("INSERT INTO users (name, email) VALUES (?, ?)").run(name, email);
const user = db.prepare("SELECT * FROM users WHERE id = ?").get(result.lastInsertRowid);
res.status(201).json(user);
});
Mengapa parameterized queries (?)?
// BAHAYA — SQL Injection! (jangan lakukan ini)
db.prepare("SELECT * FROM users WHERE name = " + name);
// AMAN — parameterized query
db.prepare("SELECT * FROM users WHERE name = ?").get(name);
Di BelajarWeb.dev, kamu menggunakan sql.js yang berjalan di browser sebagai pengganti database server.