Gunakan minItems/maxItems di JSON Schema Koleksi
Agar JSON schema koleksi Anda lebih andal, gunakan minItems dan maxItems sehingga Anda dapat memercayai API Anda.
{
"type": "array",
"minItems": 1,
"items": {
"$ref": "subscription_notification.json"
}
}
alih-alih
{
"type": "array",
"items": {
"$ref": "subscription_notification.json"
}
}
Jika API Anda mengembalikan array kosong [], schema yang terakhir tetap akan lolos saat Anda membuat assertion di spec Anda.
expect(response).to match_response_schema(:subscription_notifications)
Tetapi schema yang pertama tidak
The property '#/' did not contain a minimum number of items 1 in schema
<https://json-schema.org/understanding-json-schema/reference/array.html>
Memahami Array di JSON Schema
Array di JSON Schema sangat penting untuk mendefinisikan struktur dan batasan array dalam data JSON. Array di JSON adalah kumpulan nilai yang terurut, dan array JSON Schema digunakan untuk menentukan karakteristik serta batasan array tersebut. Dengan menggunakan array JSON Schema, Anda dapat memvalidasi panjang, isi, dan keunikan sebuah array, sehingga data dipastikan sesuai dengan format yang diharapkan. Hal ini sangat berguna ketika Anda perlu menerapkan aturan tertentu pada struktur data, misalnya mewajibkan jumlah item tertentu atau memastikan semua item memiliki tipe tertentu.
Keyword Validasi untuk Array
JSON Schema menyediakan beberapa keyword validasi yang dapat digunakan untuk membatasi array. Keyword tersebut antara lain:
- items: Menentukan schema untuk setiap item di dalam array.
- additionalItems: Menentukan schema untuk item tambahan di dalam array di luar schema items yang pertama.
- minItems dan maxItems: Menentukan jumlah minimum dan maksimum item di dalam array.
- uniqueItems: Menentukan apakah item di dalam array harus unik.
- contains: Menentukan schema yang harus dipenuhi oleh setidaknya satu item di dalam array.
- minContains dan maxContains: Menentukan jumlah minimum dan maksimum item di dalam array yang harus cocok dengan schema contains.
Keyword ini memungkinkan Anda mendefinisikan batasan yang presisi pada array, sehingga data dipastikan memenuhi kriteria yang dibutuhkan.
Membatasi Panjang Array
JSON Schema menyediakan beberapa cara untuk membatasi panjang array. Keyword minItems dan maxItems dapat digunakan untuk menentukan jumlah minimum dan maksimum item di dalam array. Contohnya: { "type": "array", "minItems": 2, "maxItems": 5 } Schema ini menyatakan bahwa array harus memiliki setidaknya 2 item dan paling banyak 5 item. Dengan menggunakan keyword ini, Anda dapat memastikan panjang array berada dalam rentang yang diinginkan, sehingga terhindar dari masalah item yang terlalu sedikit atau terlalu banyak.
Praktik Terbaik untuk Validasi Array
Saat memvalidasi array dengan JSON Schema, sebaiknya Anda menggunakan kombinasi keyword validasi untuk memastikan array memenuhi batasan yang dibutuhkan. Misalnya, Anda dapat menggunakan items untuk menentukan schema setiap item di dalam array, serta minItems dan maxItems untuk menentukan jumlah minimum dan maksimum item di dalam array.
Sebaiknya Anda juga menggunakan keyword uniqueItems untuk memastikan item di dalam array bersifat unik, jika hal tersebut memang diperlukan oleh data Anda. Dengan menggabungkan keyword ini, Anda dapat membuat schema yang andal dan memvalidasi struktur serta isi array secara menyeluruh.
Contoh Kasus Penggunaan
Berikut beberapa contoh kasus penggunaan array JSON Schema:
- Memvalidasi daftar ID pengguna: Anda dapat menggunakan schema seperti ini untuk memvalidasi daftar ID pengguna:
{ "type": "array",
"items": {"type": "integer"},
"minItems": 1, "maxItems": 10 }
- Memvalidasi daftar nama produk: Anda dapat menggunakan schema seperti ini untuk memvalidasi daftar nama produk:
{ "type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 5, "uniqueItems": true }
- Memvalidasi daftar alamat: Anda dapat menggunakan schema seperti ini untuk memvalidasi daftar alamat:
{ "type": "array", "items": { "type": "object", "properties": { "street": {"type": "string"}, "city": {"type": "string"}, "state": {"type": "string"}, "zip": {"type": "string"} }, "required": ["street", "city", "state", "zip"] }, "minItems": 1, "maxItems": 10 }
Contoh-contoh ini menunjukkan cara menerapkan array JSON Schema pada berbagai jenis data, sehingga array dipastikan memenuhi batasan dan persyaratan yang ditentukan.