Jangan pernah percaya input dari client. Selalu validasi sebelum memproses.
Validasi wajib:
app.post("/users", (req, res) => {
const { name, email } = req.body;
if (!name || typeof name !== "string") {
return res.status(400).json({ error: "Name is required" });
}
if (!email || !email.includes("@")) {
return res.status(400).json({ error: "Valid email is required" });
}
// Input valid, lanjut proses...
});
Format error yang baik:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Input tidak valid",
"fields": {
"name": "Nama wajib diisi",
"email": "Format email tidak valid"
}
}
}
Best practices:
- Return 400 untuk input tidak valid (bukan 500)
- Berikan pesan error yang spesifik per field
- Validasi tipe data (string, number, boolean)
- Validasi format (email, phone, URL)
- Validasi range (min/max panjang, min/max nilai)
- Trim whitespace dari string input
- Jangan expose detail internal (query SQL, stack trace)