Membuat REST API CRUD dengan Node.js, Express, dan MySQL
  • Admin
  • 12 Okt 2025
  • Node.js

Membuat REST API CRUD dengan Node.js, Express, dan MySQL

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.

1. Persiapan Awal

a. Instalasi Tools yang Diperlukan

Pastikan kamu sudah menginstal:

  • Node.js
  • MySQL Server
  • Text editor seperti VS Code

b. Buat Folder Project

mkdir nodejs-crud-api
cd nodejs-crud-api

c. Inisialisasi Project Node.js

npm init -y

d. Install Dependencies

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.

2. Membuat Struktur Folder

Buat struktur sederhana seperti ini:

nodejs-crud-api/
│
├── db.js
├── server.js
└── routes/
    └── userRoutes.js

3. Konfigurasi Database (MySQL)

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
);

4. Koneksi ke Database (db.js)

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;

5. Membuat Server (server.js)

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}`);
});

6. Membuat Routing CRUD (routes/userRoutes.js)

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;

7. Menjalankan Server

Jalankan server dengan perintah:

node server.js

Jika berhasil, terminal akan menampilkan:

✅ Database connected!
🚀 Server running at http://localhost:3000

8. Uji API dengan Postman / Thunder Client

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
}

9. Kesimpulan

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.

Artikel Terkait

Baca Artikel Lainnya