#Pengantar
Membangun REST API yang berjalan di localhost sangat mudah. Namun, memastikan API tersebut siap menghadapi lalu lintas nyata, serangan injeksi, kegagalan jaringan, dan pemeliharaan jangka panjang memerlukan disiplin arsitektur.
Berikut adalah prinsip-prinsip utama yang selalu saya terapkan saat membangun backend berbasis Express.js dan Node.js.
#1. Sentralisasi Penanganan Eror (Error Handling Middleware)
Jangan pernah membiarkan blok `catch (err)` mengirimkan respon HTTP langsung dengan format yang berbeda-beda di setiap controller. Buatlah custom error class dan middleware terpusat:
```javascript // Custom ApiError Class class ApiError extends Error { constructor(statusCode, message, errors = []) { super(message); this.statusCode = statusCode; this.errors = errors; } }
// Centralized Middleware app.use((err, req, res, next) => { const statusCode = err.statusCode || 500; const message = err.message || "Terjadi kesalahan internal server."; // Sembunyikan stack trace di mode produksi const response = { success: false, message, ...(process.env.NODE_ENV === "development" && { stack: err.stack }) };
res.status(statusCode).json(response); }); ```
#2. Sanitasi & Validasi Input di Layer Paling Depan
Jangan biarkan data tak valid menyentuh database layer. Gunakan schema validator seperti Joi atau Zod: 1. Validasi tipe data ketat. 2. Tolak payload tak dikenal (`stripUnknown: true`). 3. Sanitasi teks dari karakter berbahaya XSS.
#3. Autentikasi Stateless dengan JWT & Refresh Token
Pemisahan Access Token (berumur pendek, misal 15 menit) dan Refresh Token (berumur panjang, tersimpan dalam cookie HttpOnly) menjamin keamanan akun pengguna tanpa perlu membebani database untuk setiap pengecekan sesi.
#Kesimpulan
Keandalan sistem backend dinilai dari seberapa baik ia menangani kegagalan (*graceful failure*). Arsitektur yang rapi sejak awal akan menghemat ratusan jam debugging di masa depan.



