Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membangun dan menggunakan definisi tipe dalam dokumen skema kemampuan
Semua elemen dalam skema memutuskan untuk mengetik definisi. Definisi tipe ini adalah definisi tipe primitif (seperti boolean, string, angka) atau definisi tipe namespaced (definisi tipe yang dibangun dari definisi tipe primitif untuk kenyamanan).
Saat Anda mendefinisikan skema khusus, Anda dapat menggunakan definisi primitif dan definisi tipe namespace.
Daftar Isi
Definisi tipe primitif
Definisi tipe primitif adalah blok bangunan untuk semua definisi tipe yang didefinisikan dalam integrasi terkelola. Semua definisi namespace, termasuk definisi tipe kustom, diselesaikan ke definisi tipe primitif baik melalui $ref kata kunci atau kata kunci. type
Semua tipe primitif dapat dibatalkan dengan menggunakan nullable kata kunci, dan Anda dapat mengidentifikasi semua tipe primitif dengan menggunakan kata kunci. type
Boolean
Jenis Boolean mendukung nilai default.
Definisi sampel:
{ "type" : "boolean", "default" : "false", "nullable" : true }
Dukungan tipe integer
Jenis integer mendukung hal berikut:
-
Nilai
default -
Nilai
maximum -
Nilai
minimum -
Nilai
exclusiveMaximum -
Nilai
exclusiveMinimum -
Nilai
multipleOf
Jika nilai yang x divalidasi, berikut ini harus benar:
-
x≥minimum x>exclusiveMinimumx<exclusiveMaximum
catatan
Angka dengan bagian pecahan nol dianggap bilangan bulat, tetapi angka floating point ditolak.
1.0 // Schema-Compliant 3.1415926 // NOT Schema-Compliant
Meskipun Anda dapat menentukan keduanya minimum dan exclusiveMinimum atau keduanya maximum danexclusiveMaximum, kami tidak menyarankan untuk menggunakan keduanya secara bersamaan.
Contoh definisi:
{ "type" : "integer", "default" : 2, "nullable" : true, "maximum" : 10, "minimum" : 0, "multipleOf": 2 }
Definisi alternatif:
{ "type" : "integer", "default" : 2, "nullable" : true, "exclusiveMaximum" : 11, "exclusiveMinimum" : -1, "multipleOf": 2 }
Nomor
Gunakan jenis angka untuk jenis numerik apa pun, termasuk bilangan bulat dan angka floating point.
Jenis nomor mendukung hal berikut:
-
Nilai
default -
Nilai
maximum -
Nilai
minimum -
Nilai
exclusiveMaximum -
Nilai
exclusiveMinimum -
multipleOfnilai. Kelipatannya bisa menjadi nomor floating point.
Jika nilai yang x divalidasi, berikut ini harus benar:
-
x≥minimum x>exclusiveMinimumx<exclusiveMaximum
Meskipun Anda dapat menentukan keduanya minimum dan exclusiveMinimum atau keduanya maximum danexclusiveMaximum, kami tidak menyarankan untuk menggunakan keduanya secara bersamaan.
Contoh definisi:
{ "type" : "number", "default" : 0.4, "nullable" : true, "maximum" : 10.2, "minimum" : 0.2, "multipleOf": 0.2 }
Definisi alternatif:
{ "type" : "number", "default" : 0.4, "nullable" : true, "exclusiveMaximum" : 10.2, "exclusiveMinimum" : 0.2, "multipleOf": 0.2 }
String
Jenis string mendukung hal berikut:
-
Nilai
default -
kendala panjang (harus angka non-negatif) termasuk dan nilai
maxLengthminLength -
patternnilai untuk ekspresi reguler
Saat Anda mendefinisikan ekspresi reguler, string valid jika ekspresi cocok di mana saja di dalam string. Misalnya, ekspresi reguler p cocok dengan string apa pun yang mengandung p, seperti “apple”, bukan hanya string “p”. Untuk kejelasan, kami sarankan mengelilingi ekspresi reguler dengan ^...$ (misalnya,^p$), kecuali Anda memiliki alasan khusus untuk tidak melakukannya.
Definisi sampel:
{ "type" : "string", "default" : "defaultString", "nullable" : true, "maxLength": 10, "minLength": 1, "pattern" : "^([0-9a-fA-F]{2})+$" }
Nulls
Tipe nol hanya menerima satu nilai:null.
Definisi sampel:
{ "type": "null" }
Array
Jenis array mendukung hal berikut:
-
default— daftar yang akan digunakan sebagai nilai default. -
items— Definisi tipe JSON dikenakan pada semua elemen array. -
Kendala panjang (harus berupa angka non-negatif)
-
minItems -
maxItems
-
-
patternnilai untuk Regex -
uniqueItems— boolean yang menunjukkan jika elemen dalam array harus unik -
prefixItems— sebuah array di mana setiap item adalah skema yang sesuai dengan setiap indeks dari array dokumen. Artinya, array di mana elemen pertama memvalidasi elemen pertama dari array input, elemen kedua memvalidasi elemen kedua dari array input, dan seterusnya.
Definisi sampel:
{ "type": "array", "default": ["1", "2"], "items" : { "type": "string", "pattern": "^([a-zA-Z0-9_ -/]+)$" }, "minItems" : 1, "maxItems": 4, "uniqueItems" : true, }
Contoh validasi array:
//Examples: ["1", "2", "3", "4"] // Schema-Compliant [] // NOT Schema-Compliant: minItems=1 ["1", "1"] // NOT Schema-Compliant: uniqueItems=true ["{"] // NOT Schema-Compliant: Does not match the RegEx pattern.
Definisi alternatif menggunakan validasi Tuple:
{ "type": "array", "prefixItems": [ { "type": "number" }, { "type": "string" }, { "enum": ["Street", "Avenue", "Boulevard"] }, { "enum": ["NW", "NE", "SW", "SE"] } ] } //Examples: [1600, "Pennsylvania", "Avenue", "NW"] // Schema-Compliant // And, by default, it's also okay to add additional items to end: [1600, "Pennsylvania", "Avenue", "NW", "Washington"] // Schema-Compliant
Objek
Jenis objek mendukung hal berikut:
-
Kendala properti
-
properties— Tentukan properti (pasangan kunci-nilai) dari suatu objek dengan menggunakan kata kunci.propertiesNilaipropertiesadalah objek, di mana setiap kunci adalah nama properti dan setiap nilai adalah skema yang digunakan untuk memvalidasi properti itu. Properti apa pun yang tidak cocok dengan nama properti dalampropertieskata kunci diabaikan oleh kata kunci ini. -
required— Secara default, properti yang ditentukan olehpropertieskata kunci tidak diperlukan. Namun, Anda dapat memberikan daftar properti yang diperlukan menggunakanrequiredkata kunci.requiredKata kunci mengambil array nol atau lebih string. Masing-masing string ini harus unik. -
propertyNames— Kata kunci ini memungkinkan kontrol atas RegEx pola untuk nama properti. Misalnya, Anda mungkin ingin menegakkan bahwa semua properti objek memiliki nama mengikuti konvensi tertentu. -
patternProperties— Ini memetakan ekspresi reguler ke skema. Jika nama properti cocok dengan ekspresi reguler yang diberikan, nilai properti harus memvalidasi terhadap skema yang sesuai. Misalnya, gunakanpatternPropertiesuntuk menentukan bahwa nilai harus cocok dengan skema tertentu, mengingat jenis nama properti tertentu. -
additionalPropertiesKata kunci ini mengontrol bagaimana properti tambahan ditangani. Properti tambahan adalah properti yang namanya tidak tercantum dalam kata kunci properti atau yang cocok dengan ekspresi reguler mana punpatternProperties. Secara default, properti tambahan diperbolehkan. Menyetel bidang inifalseberarti tidak ada properti tambahan yang diizinkan. -
unevaluatedProperties— Kata kunci ini mirip denganadditionalPropertieskecuali bahwa ia dapat mengenali properti yang dideklarasikan dalam subskema.unevaluatedPropertiesbekerja dengan mengumpulkan properti apa pun yang berhasil divalidasi saat memproses skema dan menggunakannya sebagai daftar properti yang diizinkan. Ini memungkinkan Anda melakukan hal-hal yang lebih kompleks seperti menambahkan properti secara kondisional. Lihat contoh di bawah ini untuk lebih jelasnya.
-
-
anyOf— Nilai kata kunci ini HARUS berupa array yang tidak kosong. Setiap item dari array HARUS menjadi Skema JSON yang valid. Sebuah instance berhasil memvalidasi terhadap kata kunci ini jika berhasil memvalidasi terhadap setidaknya satu skema yang ditentukan oleh nilai kata kunci ini. -
oneOf— Nilai kata kunci ini HARUS berupa array yang tidak kosong. Setiap item dari array HARUS menjadi Skema JSON yang valid. Sebuah instance berhasil memvalidasi terhadap kata kunci ini jika berhasil memvalidasi dengan tepat satu skema yang ditentukan oleh nilai kata kunci ini.
Contoh yang diperlukan:
{ "type": "object", "required": ["test"] } // Schema Compliant { "test": 4 } // NOT Schema Compliant {}
PropertyNames contoh:
{ "type": "object", "propertyNames": { "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" } } // Schema Compliant { "_a_valid_property_name_001": "value" } // NOT Schema Compliant { "001 invalid": "value" }
PatternProperties contoh:
{ "type": "object", "patternProperties": { "^S_": { "type": "string" }, "^I_": { "type": "integer" } } } // Schema Compliant { "S_25": "This is a string" } { "I_0": 42 } // NOT Schema Compliant { "S_0": 42 } // Value must be a string { "I_42": "This is a string" } // Value must be an integer
AdditionalProperties contoh:
{ "type": "object", "properties": { "test": { "type": "string" } }, "additionalProperties": false } // Schema Compliant { "test": "value" } OR {} // NOT Schema Compliant { "notAllowed": false }
UnevaluatedProperties contoh:
{ "type": "object", "properties": { "standard_field": { "type": "string" } }, "patternProperties": { "^@": { "type": "integer" } // Allows properties starting with '@' }, "unevaluatedProperties": false // No other properties allowed } // Schema Compliant { "standard_field": "some value", "@id": 123, "@timestamp": 1678886400 } // This passes because "standard_field" is evaluated by properties, // "@id" and "@timestamp" are evaluated by patternProperties, // and no other properties remain unevaluated. // NOT Schema Compliant { "standard_field": "some value", "another_field": "unallowed" } // This fails because "another_field" is unevaluated and doesn't match // the @ pattern, leading to a violation of unevaluatedProperties: false
AnyOf contoh:
{ "anyOf": [ { "type": "string", "maxLength": 5 }, { "type": "number", "minimum": 0 } ] } // Schema Compliant "short" 12 // NOT Schema Compliant "too long" -5
OneOf contoh:
{ "oneOf": [ { "type": "number", "multipleOf": 5 }, { "type": "number", "multipleOf": 3 } ] } // Schema Compliant 10 9 // NOT Schema compliant 2 // Not a multiple of either 5 or 3 15 // Multiple of both 5 and 3 is rejected.
Definisi tipe namespaced
Definisi tipe namespaced adalah tipe yang dibangun dari tipe primitif. Tipe ini harus mengikuti format Integrasi terkelola menyediakan tipe yang telah ditentukan di bawah namespace.typename.aws dan matter ruang nama. Anda dapat menggunakan namespace apa pun untuk jenis kustom kecuali ruang nama yang dicadangkan aws danmatter.
Untuk menemukan definisi tipe namespace yang tersedia, gunakan ListSchemaVersionsAPI dengan Type filter disetel ke. definition
Jenis matter
Temukan tipe data di bawah matter namespace menggunakan ListSchemaVersionsAPI dengan Namespace filter disetel ke matter dan filter disetel keType. definition
Jenis aws
Temukan tipe data di bawah aws namespace menggunakan ListSchemaVersionsAPI dengan Namespace filter disetel ke aws dan filter disetel keType. definition
Definisi jenis bitmap
Bitmap memiliki dua properti yang diperlukan:
typeharus menjadi objekpropertiesharus berupa objek yang berisi setiap definisi bit. Setiap bit adalah objek dengan propertiextrinsicIddanvalue. Nilai setiap bit harus berupa bilangan bulat dengan nilai minimum 0 dan nilai maksimum minimal 1.
Contoh definisi bitmap:
{ "title" : "Sample Bitmap Type", "description" : "Type definition for SampleBitmap.", "$ref" : "/schema-versions/definition/aws.bitmap@1.0 ", "type" : "object", "additionalProperties" : false, "properties" : { "Bit1" : { "extrinsicId" : "0x0000", "value" : { "type" : "integer", "maximum" : 1, "minimum" : 0 } }, "Bit2" : { "extrinsicId" : "0x0001", "value" : { "type" : "integer", "maximum" : 1, "minimum" : 0 } } } } // Schema Compliant { "Bit1": 1, "Bit1": 0 } // NOT Schema Compliant { "Bit1": -1, "Bit1": 0 }
Definisi tipe enum
Enum membutuhkan tiga properti:
-
typeharus menjadi objek -
enumharus berupa array string unik, dengan minimal satu item -
extrinsicIdMapadalah objek dengan properti yang merupakan nilai enum. Nilai masing-masing properti harus menjadi pengidentifikasi ekstrinsik yang sesuai dengan nilai enum.
Contoh definisi enum:
{ "title" : "SampleEnum Type", "description" : "Type definition for SampleEnum.", "$ref" : "/schema-versions/definition/aws.enum@1.0", "type" : "string", "enum" : [ "EnumValue0", "EnumValue1", "EnumValue2" ], "extrinsicIdMap" : { "EnumValue0" : "0", "EnumValue1" : "1", "EnumValue2" : "2" } } // Schema Compliant "EnumValue0" "EnumValue1" "EnumValue2" // NOT Schema Compliant "NotAnEnumValue"