
Cara Membuat API CRUD di Express.js dengan MySQL: Tutorial Lengkap
Kalau kamu sedang belajar backend development, pasti sering dengar istilah CRUD. CRUD adalah singkatan dari Create, Read, Update, Delete. Ini adalah dasar pengelolaan data dalam aplikasi berbasis database. Nah, dalam tutorial ini, kita akan membuat API CRUD menggunakan Express.js dan MySQL. Cocok banget buat pemula yang ingin belajar integrasi Express.js dengan database.
Yuk, kita mulai! 🚀
Kenapa Harus MySQL?
MySQL adalah salah satu relational database management system (RDBMS) yang paling populer. MySQL sering digunakan karena:
- Gratis dan open-source.
- Performa cepat untuk aplikasi skala kecil hingga menengah.
- Dokumentasi lengkap dan komunitas besar.
Tools yang Dibutuhkan
Pastikan kamu sudah menginstal software berikut:
- Node.js: Untuk menjalankan Express.js.
- MySQL Server: Untuk menyimpan data.
- Postman: Untuk mengetes API.
- npm: Untuk mengelola dependencies proyek.
Langkah-Langkah Membuat API CRUD di Express.js dengan MySQL
1. Inisialisasi Proyek
Buka terminal dan buat folder baru untuk proyekmu. Kemudian jalankan perintah berikut:
mkdir api-crud-express-mysql
cd api-crud-express-mysql
npm init -y
Ini akan membuat file package.json
untuk proyekmu.
2. Instal Dependencies
Untuk memulai, instal dependencies berikut:
npm install express mysql2 body-parser cors
- express: Framework untuk membuat server.
- mysql2: Library untuk koneksi ke MySQL.
- body-parser: Untuk parsing request body.
- cors: Agar API bisa diakses dari domain lain.
3. Siapkan Database MySQL
- Buka MySQL dan buat database baru:
CREATE DATABASE express_crud;
- Buat tabel untuk menyimpan data user:
USE express_crud;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4. Struktur Folder Proyek
Buat struktur folder seperti ini:
api-crud-express-mysql/
├── node_modules/
├── package.json
├── server.js
└── config/
└── db.js
└── routes/
└── userRoutes.js
5. Konfigurasi Database
Buat file config/db.js
untuk menghubungkan Express.js dengan MySQL:
const mysql = require('mysql2');
const db = mysql.createConnection({
host: 'localhost', // Ganti sesuai konfigurasi MySQL kamu
user: 'root', // Username MySQL
password: '', // Password MySQL
database: 'express_crud', // Nama database
});
db.connect((err) => {
if (err) {
console.error('Koneksi database gagal:', err.message);
} else {
console.log('Koneksi ke database berhasil!');
}
});
module.exports = db;
6. Membuat Server Express.js
Buka file server.js
dan tambahkan kode berikut:
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const userRoutes = require('./routes/userRoutes');
const app = express();
// Middleware
app.use(cors());
app.use(bodyParser.json());
// Routes
app.use('/api/users', userRoutes);
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Server berjalan di http://localhost:${PORT}`);
});
7. Membuat Routes CRUD
Buat file routes/userRoutes.js
untuk menulis logic CRUD:
const express = require('express');
const db = require('../config/db');
const router = express.Router();
// CREATE
router.post('/', (req, res) => {
const { name, email } = req.body;
const query = 'INSERT INTO users (name, email) VALUES (?, ?)';
db.query(query, [name, email], (err, result) => {
if (err) return res.status(500).json(err);
res.status(201).json({ id: result.insertId, name, email });
});
});
// READ
router.get('/', (req, res) => {
const query = 'SELECT * FROM users';
db.query(query, (err, results) => {
if (err) return res.status(500).json(err);
res.json(results);
});
});
router.get('/:id', (req, res) => {
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [req.params.id], (err, results) => {
if (err) return res.status(500).json(err);
if (results.length === 0) return res.status(404).json({ message: 'User not found' });
res.json(results[0]);
});
});
// UPDATE
router.put('/:id', (req, res) => {
const { name, email } = req.body;
const query = 'UPDATE users SET name = ?, email = ? WHERE id = ?';
db.query(query, [name, email, req.params.id], (err, result) => {
if (err) return res.status(500).json(err);
if (result.affectedRows === 0) return res.status(404).json({ message: 'User not found' });
res.json({ id: req.params.id, name, email });
});
});
// DELETE
router.delete('/:id', (req, res) => {
const query = 'DELETE FROM users WHERE id = ?';
db.query(query, [req.params.id], (err, result) => {
if (err) return res.status(500).json(err);
if (result.affectedRows === 0) return res.status(404).json({ message: 'User not found' });
res.json({ message: 'User deleted successfully' });
});
});
module.exports = router;
8. Testing API
Jalankan server menggunakan:
node server.js
Lalu gunakan Postman atau cURL untuk mengetes endpoint berikut:
- POST:
http://localhost:5000/api/users
(menambahkan user). - GET:
http://localhost:5000/api/users
(mengambil semua user). - GET:
http://localhost:5000/api/users/:id
(mengambil user berdasarkan ID). - PUT:
http://localhost:5000/api/users/:id
(mengupdate user). - DELETE:
http://localhost:5000/api/users/:id
(menghapus user).
Tips Optimasi
- Error Handling: Tambahkan middleware untuk menangani error dengan lebih rapi.
- Gunakan Variabel Lingkungan: Simpan konfigurasi sensitif (seperti password) di file
.env
. - Pagination: Tambahkan fitur pagination untuk data yang besar.
Penutup
Kamu sudah berhasil membuat API CRUD menggunakan Express.js dan MySQL! 🎉 Tutorial ini bisa kamu kembangkan dengan menambahkan autentikasi, validasi input, atau bahkan menghubungkannya dengan frontend seperti React atau Vue.
Kalau ada pertanyaan, tulis di komentar ya! Selamat coding! 😊
Leave a Reply