JSON Schema: Dari Dasar hingga Produksi
Kata kuncinya banyak, tetapi hanya selusin yang digunakan setiap hari. Kuasai type/properties/required/$ref, tangani pesan error dengan baik, dan Anda mencakup delapan puluh persen kasus nyata.
Deskripsikan bentuk data Anda dengan JSON Schema, ubah kesepakatan verbal menjadi validasi yang dapat dieksekusi, dan biarkan ia menggerakkan tipe TypeScript serta pembuatan form sebagai balasannya.
7 artikelKata kuncinya banyak, tetapi hanya selusin yang digunakan setiap hari. Kuasai type/properties/required/$ref, tangani pesan error dengan baik, dan Anda mencakup delapan puluh persen kasus nyata.
Tipe dan schema masing-masing mencakup satu segmen: satu saat kompilasi, satu saat runtime. Pertanyaannya bukan mana yang dipilih, tetapi bagaimana menjaga keduanya tetap sinkron secara otomatis.
Schema hasil generator sering memblokir data valid. Pelajari mengapa sampel yang lebih kaya menghasilkan schema yang lebih buruk, lalu alur kerja: pengambilan sampel multi-record, pelengkapan semantik, pelokasian error.
$ref menyelesaikan penggunaan ulang, allOf dan oneOf menyelesaikan komposisi, dan menumpuk keduanya adalah tempat hal-hal rusak. Mencakup $id, $defs, kondisional, rekursi, bundling, dan debugging.
Validator mengeluarkan error mesin; pengguna ingin tahu kotak input mana yang salah. Mencakup array errors Ajv, instancePath versus schemaPath, pengelompokan, dan perumusan kata.
Validasi yang lulus bukan berarti data bersih. Pydantic secara bawaan mengabaikan kolom tak dikenal, Zod menghapusnya, Ajv membiarkannya — parameter halusinasi dan kunci salah ketik lolos tanpa suara. Artikel ini menunjukkan tiga bentuk penerimaan diam dan memberikan resep lengkap: menutup objek, mengontrol koersi, mengencangkan setiap tingkat sarang.
Skema tidak berakhir saat ditulis — di situlah degradasi dimulai. Satu salah ketik diam-diam melonggarkan validasi, satu refaktoring memecahkan semua fixture. Panduan ini membedah susunan pengujian kontrak yang bisa dilaksanakan: fixture positif, negatif dan snapshot, lint skema itu sendiri, kompilasi sekali dengan penggunaan ulang, dan empat gerbang CI yang mengubah pecahnya kontrak menjadi build merah.