Middleware adalah function yang berada di antara request dan response. Saat client mengirim request, middleware akan dijalankan terlebih dahulu sebelum request sampai ke route.
Middleware biasanya digunakan untuk:
- logging
- validasi data
- autentikasi
- manipulasi request dan response
Tanpa middleware, kode routing akan cepat menjadi berantakan.
Contents
- 1 Cara Kerja Middleware dalam Alur Request
- 2 Contoh Middleware Sederhana
- 3 Middleware untuk Logging Request
- 4 Middleware Bawaan Express.js
- 5 Middleware Khusus untuk Route Tertentu
- 6 Menggunakan Banyak Middleware Sekaligus
- 7 Middleware dengan Express Router
- 8 Error Handling Middleware
- 9 Contoh Praktik Middleware Sederhana
- 10 Kesalahan Umum dalam Penggunaan Middleware
- 11 Kesimpulan
- 12 Related Posts
Cara Kerja Middleware dalam Alur Request
Alur kerja middleware di Express.js adalah:
- client mengirim request
- middleware dijalankan
- request diteruskan ke route
- response dikirim ke client
Middleware harus memanggil next() agar request bisa lanjut ke proses berikutnya.
Contoh Middleware Sederhana
app.use((req, res, next) => {
console.log("Request diterima");
next();
});
Middleware ini akan dijalankan setiap kali ada request masuk ke server.
Middleware untuk Logging Request
Contoh middleware untuk mencatat aktivitas request:
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
Middleware seperti ini sangat berguna saat debugging.
Middleware Bawaan Express.js
Express menyediakan beberapa middleware bawaan yang sering digunakan.
Middleware JSON
app.use(express.json());
Middleware ini memungkinkan Express membaca body JSON dari request.
Middleware URL Encoded
app.use(express.urlencoded({ extended: true }));
Digunakan untuk membaca data dari form HTML.
Middleware Khusus untuk Route Tertentu
Middleware tidak harus diterapkan ke seluruh aplikasi.
function authMiddleware(req, res, next) {
if (!req.headers.authorization) {
return res.status(401).json({
message: "Unauthorized"
});
}
next();
}
app.get("/dashboard", authMiddleware, (req, res) => {
res.send("Dashboard");
});
Middleware ini hanya berlaku untuk route /dashboard.
Menggunakan Banyak Middleware Sekaligus
Express memungkinkan penggunaan beberapa middleware dalam satu route.
app.post(
"/post",
validateData,
authMiddleware,
(req, res) => {
res.send("Post berhasil dibuat");
}
);
Middleware akan dijalankan sesuai urutan penulisannya.
Middleware dengan Express Router
Middleware juga bisa diterapkan di level Router.
// routes/adminRoutes.js
import express from "express";
const router = express.Router();
router.use((req, res, next) => {
console.log("Akses admin");
next();
});
router.get("/dashboard", (req, res) => {
res.send("Admin Dashboard");
});
export default router;
Semua route dalam router ini akan melewati middleware tersebut.
Error Handling Middleware
Error handling middleware memiliki parameter khusus.
app.use((err, req, res, next) => {
console.error(err.message);
res.status(500).json({
message: "Terjadi kesalahan server"
});
});
Middleware ini menangani error secara terpusat dan membuat aplikasi lebih stabil.
Contoh Praktik Middleware Sederhana
import express from "express";
const app = express();
app.use(express.json());
app.use((req, res, next) => {
console.log("Request masuk");
next();
});
app.post("/login", (req, res) => {
res.json({
message: "Login berhasil"
});
});
app.listen(3000);
Contoh ini menunjukkan middleware berjalan sebelum route dieksekusi.
Kesalahan Umum dalam Penggunaan Middleware
Beberapa kesalahan yang sering terjadi:
- lupa memanggil
next() - middleware terlalu kompleks
- tidak memisahkan middleware ke file terpisah
Middleware sebaiknya kecil, fokus, dan mudah dipahami.
Kesimpulan
Middleware adalah salah satu konsep paling penting di Express.js. Dengan middleware, kita bisa:
- memisahkan logika aplikasi
- menjaga kode tetap rapi
- membangun aplikasi yang lebih aman dan scalable
Bab ini menjadi dasar sebelum masuk ke autentikasi dan pengelolaan data yang lebih kompleks.