Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pengujian Kontrak API: JSON Schema, Respons Galat, dan Regresi

Pelajaran 7 dari 13

Batas nilai, skenario negatif, dan respons galat

Batas nilai, panjang teks, pola, dan enum

Setelah pelajaran ini kamu bisa menerapkan minimum, maximum, exclusiveMinimum, exclusiveMaximum, minLength, maxLength, pattern, dan enum, termasuk perilakunya pada nilai di batas.

±13 menitDiperiksa 7 Okt 2026

Materi

Tipe yang benar belum cukup. Stok -3 tetap integer, dan ISBN "978" tetap string. Kata kunci batas menutup celah itu. minimum dan maximum inklusif: nilai yang sama dengan batas lolos. exclusiveMinimum dan exclusiveMaximum eksklusif: nilai harus lebih besar atau lebih kecil daripada batasnya. Spesifikasi validasi menulis setiap kata kunci angka dengan syarat "bila data berupa angka", sehingga skema yang hanya berisi minimum meloloskan teks apa pun. Karena itu batas selalu dipasangkan dengan type.

{
  "stok":   { "type": "integer", "minimum": 0 },
  "rating": { "type": "number", "minimum": 1, "maximum": 5 },
  "isbn":   { "type": "string", "pattern": "^97[89][0-9]{10}$" },
  "judul":  { "type": "string", "minLength": 1, "maxLength": 120 },
  "bahasa": { "enum": ["id", "en"] }
}

minLength dan maxLength menghitung karakter. Spesifikasi mendefinisikan panjang teks sebagai banyaknya karakter menurut RFC 8259, sedangkan MDN mencatat length di JavaScript menghitung unit kode UTF-16. Emoji 📚 satu karakter, tetapi "📚".length bernilai 2; [...teks].length menghitung karakter seperti yang dimaksud skema. pattern memakai ekspresi reguler dialek JavaScript dan tidak otomatis berjangkar: pola [0-9]{5} cocok dengan "Kode 901234" karena lima digit berurutan ada di dalamnya. Tulis ^ dan $ bila seluruh teks harus cocok.

enum membatasi nilai pada daftar tetap. Kesamaan dinilai menurut tipe dan nilai, jadi enum [1, 2] menolak teks "1", dan enum ["id", "en"] menolak "ID".

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Kontrak menyatakan jumlah di badan respons adalah integer minimal nol: { "type": "integer", "minimum": 0 }. Respons mana yang melanggar kontrak?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke