BAB 11 – Middleware Express.js: Cara Kerja dan Penerapannya dalam Aplikasi

BAB 11 – Middleware Express.js: Cara Kerja dan Penerapannya dalam Aplikasi

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.


Cara Kerja Middleware dalam Alur Request

Alur kerja middleware di Express.js adalah:

  1. client mengirim request
  2. middleware dijalankan
  3. request diteruskan ke route
  4. 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.