JSON Schema Subset: Kenapa Tidak Selalu Butuh Ajv
Untuk validasi UI interaktif, subset kecil JSON Schema menutup sebagian besar kasus. Menarik library penuh menambah bundle tanpa menambah kemampuan yang dipakai.
JSON Schema penuh itu spesifikasi besar: kombinasi allOf, anyOf, oneOf, not, if/then/else, $ref, format, plus belasan keyword anotasi. Sebagian besar aplikasi tidak pernah menyentuh setengahnya.
Subset yang menutup mayoritas kasus nyata: type, properties, required, items, enum, minimum, maximum, minLength, maxLength, pattern. Itu sekitar sepuluh keyword, dan menulis validatornya beberapa ratus baris, tanpa dependensi.
Alasan subset lebih baik untuk UI interaktif: pesan error bisa dirancang. Validator penuh mengembalikan error dalam formatnya sendiri, yang harus kamu terjemahkan. Validator subset mengembalikan tepat bentuk yang UI-mu butuhkan.
Kapan pindah ke library penuh: begitu kamu butuh $ref lintas dokumen, atau kombinasi boolean schema. Di titik itu kompleksitasnya nyata dan menulis sendiri jadi beban.
Kapan sama sekali tidak butuh schema: kalau tipe datanya sudah tetap dan kamu mengontrol inputnya. Schema berguna ketika bentuk data datang dari luar dan berubah.