Loading...
Dalam pengembangan aplikasi modern, REST API menjadi salah satu komponen penting untuk menghubungkan frontend dan backend. Salah satu kombinasi populer untuk membangun REST API adalah menggunakan Node.js dan Express sebagai server, serta MySQL sebagai database.
Pada artikel ini, kamu akan belajar langkah demi langkah membuat CRUD API (Create, Read, Update, Delete) sederhana menggunakan Node.js, Express, dan MySQL.
Pastikan kamu sudah menginstal:
mkdir nodejs-crud-api
cd nodejs-crud-api
npm init -y
npm install express mysql2 body-parser cors
express → framework untuk membuat server.mysql2 → koneksi ke database MySQL.body-parser → parsing data dari request body.cors → agar API bisa diakses dari frontend lain.Buat struktur sederhana seperti ini:
nodejs-crud-api/
│
├── db.js
├── server.js
└── routes/
└── userRoutes.js
Buat database baru di MySQL:
CREATE DATABASE crud_api;
USE crud_api;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
age INT
);
const mysql = require("mysql2");
const db = mysql.createConnection({
host: "localhost",
user: "root", // ubah sesuai user MySQL kamu
password: "", // isi password jika ada
database: "crud_api"
});
db.connect(err => {
if (err) throw err;
console.log("✅ Database connected!");
});
module.exports = db;
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const userRoutes = require("./routes/userRoutes");
const app = express();
app.use(cors());
app.use(bodyParser.json());
// Routing utama
app.use("/api/users", userRoutes);
// Jalankan server
const PORT = 3000;
app.listen(PORT, () => {
console.log(`🚀 Server running at http://localhost:${PORT}`);
});
const express = require("express");
const router = express.Router();
const db = require("../db");
// ✅ CREATE - Tambah data
router.post("/", (req, res) => {
const { name, email, age } = req.body;
const sql = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)";
db.query(sql, [name, email, age], (err, result) => {
if (err) return res.status(500).send(err);
res.json({ message: "User berhasil ditambahkan!", id: result.insertId });
});
});
// ✅ READ - Ambil semua data
router.get("/", (req, res) => {
db.query("SELECT * FROM users", (err, results) => {
if (err) return res.status(500).send(err);
res.json(results);
});
});
// ✅ READ by ID
router.get("/:id", (req, res) => {
const { id } = req.params;
db.query("SELECT * FROM users WHERE id = ?", [id], (err, result) => {
if (err) return res.status(500).send(err);
res.json(result[0]);
});
});
// ✅ UPDATE - Ubah data
router.put("/:id", (req, res) => {
const { id } = req.params;
const { name, email, age } = req.body;
const sql = "UPDATE users SET name=?, email=?, age=? WHERE id=?";
db.query(sql, [name, email, age, id], (err) => {
if (err) return res.status(500).send(err);
res.json({ message: "User berhasil diperbarui!" });
});
});
// ✅ DELETE - Hapus data
router.delete("/:id", (req, res) => {
const { id } = req.params;
db.query("DELETE FROM users WHERE id=?", [id], (err) => {
if (err) return res.status(500).send(err);
res.json({ message: "User berhasil dihapus!" });
});
});
module.exports = router;
Jalankan server dengan perintah:
node server.js
Jika berhasil, terminal akan menampilkan:
✅ Database connected!
🚀 Server running at http://localhost:3000
Gunakan Postman untuk mengetes endpoint berikut:
| Metode | Endpoint | Keterangan |
|---|---|---|
| GET | /api/users |
Ambil semua data |
| GET | /api/users/:id |
Ambil data berdasarkan ID |
| POST | /api/users |
Tambah data baru |
| PUT | /api/users/:id |
Ubah data |
| DELETE | /api/users/:id |
Hapus data |
Contoh body untuk POST:
{
"name": "John Doe",
"email": "john@example.com",
"age": 25
}
Dengan kombinasi Node.js, Express, dan MySQL, kamu bisa membuat REST API CRUD yang cepat, fleksibel, dan mudah dikembangkan. Struktur ini juga cocok untuk diintegrasikan dengan frontend modern seperti React, Vue, atau Flutter.
💡 Tips: Setelah API ini stabil, kamu bisa menambahkan fitur seperti validasi data, autentikasi JWT, atau pagination agar lebih lengkap dan siap produksi.