Kalau kamu baru belajar Node.js dan Express.js, pasti sering mendengar istilah middleware. Tapi, apa sih sebenarnya middleware itu? Kenapa penting dalam aplikasi web?
Tenang, di artikel ini kita akan bahas apa itu middleware, cara kerjanya, jenis-jenisnya, sampai ke contoh penggunaannya secara langkah demi langkah dan mudah dimengerti.
Pengertian Middleware
Secara sederhana, middleware adalah fungsi di Express.js yang dijalankan di antara request (permintaan dari client) dan response (jawaban dari server).
Middleware bisa digunakan untuk:
- Mengecek autentikasi
- Logging (mencatat request)
- Validasi data
- Menangani error
- Dan banyak lagi
Cara Kerja Middleware
Middleware menerima tiga parameter utama:
(req, res, next)
req
→ objek permintaan (request)res
→ objek respons (response)next()
→ fungsi untuk meneruskan ke middleware berikutnya
Contoh sederhana:
function logger(req, res, next) {
console.log(`${req.method} ${req.url}`);
next(); // penting! supaya request lanjut ke route berikutnya
}
Menambahkan Middleware ke Aplikasi
Untuk menggunakan middleware, cukup panggil:
const express = require('express');
const app = express();
app.use(logger); // logger adalah middleware
Fungsi app.use()
akan menjalankan middleware tersebut untuk semua request yang masuk.
Jenis-Jenis Middleware di Express.js
1. Application-level Middleware
Dijalankan pada level aplikasi, untuk semua route:
app.use((req, res, next) => {
console.log('Request diterima!');
next();
});
2. Router-level Middleware
Dijalankan hanya pada router tertentu:
const router = express.Router();
router.use((req, res, next) => {
console.log('Router middleware');
next();
});
3. Built-in Middleware
Express sudah menyediakan middleware bawaan seperti:
app.use(express.json()); // parsing body JSON
app.use(express.urlencoded({ extended: true })); // parsing form
4. Third-party Middleware
Middleware dari library luar, seperti:
npm install morgan
const morgan = require('morgan');
app.use(morgan('dev')); // untuk logging request
5. Error-handling Middleware
Menangani error. Memiliki 4 parameter:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Terjadi kesalahan!');
});
Urutan Eksekusi Middleware
Express akan mengeksekusi middleware sesuai urutan penulisan. Maka, penting untuk menaruh middleware yang penting di awal, seperti validasi atau autentikasi.
Contoh:
app.use(authMiddleware); // harus login
app.use(logger); // mencatat log
app.get('/dashboard', (req, res) => {
res.send('Halaman Dashboard');
});
Contoh Middleware: Cek Login
function authMiddleware(req, res, next) {
const isLoggedIn = true; // contoh (harusnya ambil dari token/session)
if (!isLoggedIn) {
return res.status(401).send('Harus login dulu!');
}
next();
}
app.get('/profile', authMiddleware, (req, res) => {
res.send('Ini halaman profile');
});
Manfaat Middleware
- Kode lebih modular dan rapi
- Bisa digunakan ulang di berbagai route
- Mudah menangani fitur umum seperti validasi, log, dan keamanan
- Sangat fleksibel dan scalable
Hal yang Perlu Diperhatikan
- Jangan lupa memanggil
next()
di akhir middleware, kalau tidak request akan "macet". - Middleware dieksekusi berurutan, jadi urutan penulisan sangat penting.
- Gunakan middleware error secara terpisah dan paling akhir.
Kesimpulan
Middleware adalah jantung dari Express.js. Dengan middleware, kamu bisa mengontrol bagaimana request diproses, memeriksa data, memvalidasi user, sampai menangani error — semua dilakukan dengan cara yang bersih dan terstruktur.
Kalau kamu sedang belajar Express.js, memahami middleware adalah langkah penting agar kamu bisa membangun aplikasi web yang lebih kompleks dan aman.