OOZOU
Hubungi Kami
Kembali ke TIL
ruby on rails

Gunakan minItems/maxItems di JSON Schema Koleksi

13 Oktober 2020

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.

Lainnya tentang ruby on rails

ruby on rails10 Februari 2022

Menggunakan Pundit Policy untuk Mengelola Permitted Parameter, Default dan Per Action

Untuk mengelola permitted params, Anda dapat menambahkan permitted\attributes dan permitted\attributes\for\#{action} di policy Anda, misalnya:

ruby on rails31 Januari 2022

Menggunakan `requestSubmit` untuk Submit Form dengan Turbo

Turbo mendengarkan event submit pada form. Oleh karena itu, selalu gunakan requestSubmit untuk men-submit form menggunakan JS.

ruby on rails19 Januari 2022

Mengabaikan Bundled Gems untuk Rubocop dan ESLint di GitHub Actions

Proyek Rails sering menginstal gem ke direktori vendor di GitHub Actions agar gem tersebut dapat di-cache untuk eksekusi berikutnya.

Punya proyek yang ingin diwujudkan?

Kami ingin mendengar apa yang sedang Anda bangun.

Mulai Percakapanhello@oozou.com
OOZOU Logo

Bangkok · Singapura · Hong Kong

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

Layanan

  • Pengembangan Web
  • Agen AI & Generative AI
  • Pengembangan Aplikasi Mobile
  • Analitik Data & Data Engineering
  • Desain UI/UX & Produk
  • Transformasi Digital

Perusahaan

  • Tentang Kami
  • Karier
  • Blog
  • Studi Kasus
  • Demo Langsung
  • Today I Learned
  • Hubungi Kami

Lainnya

  • Industri
  • Jaringan Mitra
© 2026 OOZOU. Hak cipta dilindungi undang-undang.
Kebijakan PrivasiKode EtikKebijakan ABAC