Validation
Pemeriksaan data input untuk memastikan sesuai format, tipe, dan aturan yang diharapkan.
Validation adalah proses memeriksa data yang masuk (dari form, API request) untuk memastikan sesuai dengan aturan bisnis dan format yang diharapkan. Validation harus dilakukan di server (bukan hanya di client — client-side validation bisa di-bypass). Aspek yang divalidasi: Type (apakah string, number, boolean?), Format (email valid? URL valid?), Length (password minimal 8 karakter?), Range (umur antara 18-100?), Required (field wajib diisi?), dan Custom Rules (password harus mengandung huruf besar dan angka?). Library validation populer: Zod (TypeScript-first, powerful), Joi, Yup, class-validator, dan express-validator. Zod sangat populer karena bisa infer TypeScript type dari schema.
Contoh Kode
// Validasi dengan Zod
import { z } from 'zod';
const userSchema = z.object({
email: z.string().email('Email tidak valid'),
password: z.string().min(8, 'Minimal 8 karakter'),
age: z.number().int().min(18, 'Harus 18+'),
role: z.enum(['user', 'admin']),
});
// Validasi input
const result = userSchema.safeParse(req.body);
if (!result.success) {
return c.json({ errors: result.error.flatten() }, 400);
}
// result.data sekarang typed dan valid