Recraftory

Middleware

Memahami konsep middleware dalam pemrosesan request API

Apa itu Middleware

  • Fungsi yang berjalan di antara request masuk dan response keluar
  • Memproses request sebelum sampai ke handler endpoint
  • Bisa juga memodifikasi response sebelum dikirim ke client

Cara Kerja Middleware

  • Request masuk dari client
  • Middleware pertama diproses
  • Middleware berikutnya diproses secara berurutan
  • Handler endpoint diproses
  • Response melewati middleware secara terbalik
  • Response dikirim ke client

Jenis-Jenis Middleware

Authentication Middleware

  • Memeriksa apakah request memiliki token atau session valid
  • Menolak request dengan status 401 jika tidak terautentikasi
  • Menyimpan data user ke request agar handler bisa mengaksesnya

Authorization Middleware

  • Memeriksa apakah user punya izin untuk mengakses resource
  • Menolak request dengan status 403 jika tidak punya izin
  • Biasanya berjalan setelah authentication middleware

Logging Middleware

  • Mencatat setiap request yang masuk ke API
  • Mencatat method, URL, status code, dan waktu response
  • Memudahkan debugging dan monitoring

Error Handling Middleware

  • Menangkap error yang terjadi di handler atau middleware lain
  • Mengubah error menjadi format response yang konsisten
  • Mencegah error tidak tertangkap dan server crash

Validation Middleware

  • Memeriksa format dan isi request body, query, atau parameter
  • Menolak request dengan status 400 jika data tidak valid
  • Memastikan handler hanya menerima data yang sudah bersih

Contoh Middleware Sederhana

function loggingMiddleware(request, response, next) {
  const start = Date.now();
  
  response.on('finish', () => {
    const duration = Date.now() - start;
    console.log(`${request.method} ${request.url} ${response.statusCode} ${duration}ms`);
  });
  
  next();
}

Middleware Stack

  • Middleware dijalankan dalam urutan pendaftaran
  • Urutan penting, authentication harus sebelum authorization
  • Middleware global berjalan untuk semua endpoint
  • Middleware spesifik hanya berjalan untuk endpoint tertentu

Keuntungan Menggunakan Middleware

  • Logic umum tidak perlu diulang di setiap handler
  • Pemisahan concern yang jelas
  • Mudah menambah atau menghapus fungsionalitas
  • Testing handler lebih fokus karena logic umum dipisah

Praktik Terbaik

  • Gunakan middleware untuk logic yang berulang di banyak endpoint
  • Jangan letakkan logic bisnis di middleware
  • Pastikan middleware selalu memanggil next() agar request tidak terhenti
  • Middleware error handling harus berada di posisi terakhir