Digital Transformation
Middleware
TL;DR: Middleware adalah lapisan kode yang berjalan sebelum permintaan mencapai halaman final, dipakai untuk autentikasi, redirect, A/B testing, geolocation, atau menambah header keamanan. Di Next.js 15, middleware berjalan di Edge Runtime sehingga eksekusinya hitungan milidetik dan tidak membebani server origin.
Apa itu Middleware?
Middleware adalah perantara antara permintaan masuk dan respons keluar. Setiap kali pengunjung membuka URL, middleware dijalankan dulu sebelum framework memutuskan halaman mana yang akan ditampilkan. Di sini, kode bisa membaca cookie, memeriksa token, mengubah URL, atau menulis header baru.
Analoginya seperti petugas di pintu masuk gedung. Sebelum tamu masuk ruangan, mereka diperiksa, dicatat, atau diarahkan ke lantai lain. Penggunaan edge runtime membuat lapisan ini cepat karena tidak harus pergi ke server pusat.
Kasus Pakai Umum
| Skenario | Implementasi Middleware |
|---|---|
| Proteksi route admin | Cek cookie session, redirect ke /login jika kosong |
| A/B testing | Set cookie variant, rewrite ke versi A atau B |
| Geolocation routing | Baca header geo, redirect ke /id atau /en |
| Rate limiting | Hitung permintaan per IP, kirim 429 jika lewat batas |
| Header keamanan | Tambah CSP, HSTS, X-Frame-Options dinamis |
| Bot protection | Block bot dari User-Agent atau IP block |
Kode middleware harus ringan (di bawah 1 MB di Edge), jadi hindari library berat di sini.
Kenapa Penting bagi Marketer dan Developer?
Marketer sering minta fitur kompleks seperti redirect kampanye, region-specific landing page, atau gate konten premium. Tanpa middleware, semua ini harus ditambah di setiap halaman secara duplikatif. Dengan middleware, satu file mengatur logika global tanpa mengubah halaman individual.
Dokumentasi resmi Next.js Middleware menjelaskan API matcher dan runtime constraints yang harus diikuti.
Pertanyaan Umum
Apakah middleware Next.js sama dengan API route?
Tidak. API route adalah endpoint yang melayani permintaan tertentu (misal POST /api/login). Middleware berjalan otomatis di setiap permintaan halaman atau aset, sebelum API atau halaman dijalankan.
Bisakah middleware mengakses database?
Bisa, tapi tidak disarankan untuk koneksi database tradisional karena Edge Runtime tidak mendukung driver Node.js seperti pg atau mysql2. Gunakan database HTTP-based seperti Supabase REST API, Upstash, atau Turso.
Istilah Terkait