Middleware Dasar
Penjelasan
Middleware adalah fungsi dengan signature (req, res, next) yang dijalankan SEBELUM handler route utama — dipakai untuk logging, autentikasi, validasi, dst. Didaftarkan lewat app.use() (berlaku global) atau sebagai argumen tambahan di route tertentu. WAJIB memanggil next() supaya request lanjut ke middleware/handler berikutnya, kecuali memang sengaja mau menghentikan request di situ (mis. kirim response error).
Contoh Konsep
function logger(req, res, next) {
console.log(`${req.method} ${req.url}`);
next(); // WAJIB, supaya request lanjut
}
app.use(logger); // berlaku untuk SEMUA route
function cekUmur(req, res, next) {
if (Number(req.query.umur) < 18) {
return res.status(403).send('Akses ditolak, umur minimal 18 tahun');
}
next();
}
app.get('/dewasa', cekUmur, (req, res) => {
res.send('Selamat datang!');
});
Praktikum
Buat middleware cekJamKerja yang menolak akses (status 403) kalau jam sekarang (new Date().getHours()) di luar rentang 8-17, dan memanggil next() kalau masih dalam jam kerja. Pasangkan ke route GET /admin.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Lupa memanggil next() (dan tidak mengirim response apa pun) membuat REQUEST MENGGANTUNG SELAMANYA — browser akan terus "loading" tanpa henti karena tidak pernah dapat response, salah satu bug paling membingungkan bagi pemula Express karena tidak ada pesan error yang jelas.