استخدام minItems وmaxItems في مخططات JSON للمجموعات
لجعل مخططات JSON الخاصة بالمجموعات أكثر موثوقية، استخدموا minItems وmaxItems حتى تثقوا بواجهة API الخاصة بكم.
{
"type": "array",
"minItems": 1,
"items": {
"$ref": "subscription_notification.json"
}
}
بدلًا من
{
"type": "array",
"items": {
"$ref": "subscription_notification.json"
}
}
إذا أعادت واجهة API مصفوفة فارغة []، فسينجح المخطط الأخير عند التحقق منه في الاختبارات.
expect(response).to match_response_schema(:subscription_notifications)
لكن المخطط الأول لن ينجح
The property '#/' did not contain a minimum number of items 1 in schema
<https://json-schema.org/understanding-json-schema/reference/array.html>
فهم المصفوفات في JSON Schema
المصفوفات في JSON Schema أساسية لتحديد بنية المصفوفات وقيودها في بيانات JSON. المصفوفة في JSON مجموعة مرتبة من القيم، ويُستخدم مخطط المصفوفة في JSON Schema لتحديد خصائص هذه المصفوفات وقيودها. وباستخدامه يمكنكم التحقق من طول المصفوفة ومحتواها وتفرّد عناصرها، لضمان التزام البيانات بالصيغة المتوقعة. ويفيد ذلك بشكل خاص عندما تحتاجون إلى فرض قواعد محددة على بنية البيانات، مثل اشتراط عدد معيّن من العناصر أو التأكد من أن جميع العناصر من نوع محدد.
كلمات التحقق المفتاحية للمصفوفات
توفّر JSON Schema عدة كلمات مفتاحية للتحقق يمكن استخدامها لتقييد المصفوفات، ومنها:
- items: تحدد المخطط الخاص بكل عنصر في المصفوفة.
- additionalItems: تحدد المخطط الخاص بأي عناصر إضافية في المصفوفة بعد العناصر المشمولة بمخطط items الأول.
- minItems وmaxItems: تحددان الحد الأدنى والحد الأقصى لعدد العناصر في المصفوفة.
- uniqueItems: تحدد ما إذا كان يجب أن تكون عناصر المصفوفة فريدة.
- contains: تحدد مخططًا يجب أن يطابقه عنصر واحد على الأقل في المصفوفة.
- minContains وmaxContains: تحددان الحد الأدنى والحد الأقصى لعدد العناصر التي يجب أن تطابق مخطط contains.
تتيح لكم هذه الكلمات المفتاحية تحديد قيود دقيقة على المصفوفة، لضمان استيفاء البيانات للمعايير المطلوبة.
تقييد طول المصفوفة
توفّر JSON Schema عدة طرق لتقييد طول المصفوفة. يمكن استخدام الكلمتين المفتاحيتين minItems وmaxItems لتحديد الحد الأدنى والحد الأقصى لعدد العناصر في المصفوفة. على سبيل المثال: { "type": "array", "minItems": 2, "maxItems": 5 } يشترط هذا المخطط أن تحتوي المصفوفة على عنصرين على الأقل و5 عناصر على الأكثر. وباستخدام هذه الكلمات المفتاحية تضمنون أن يقع طول المصفوفة ضمن النطاق المطلوب، فتتجنبون مشكلات قلة العناصر أو كثرتها.
أفضل الممارسات للتحقق من المصفوفات
عند التحقق من المصفوفات باستخدام JSON Schema، يُستحسن الجمع بين عدة كلمات مفتاحية للتحقق لضمان استيفاء المصفوفة للقيود المطلوبة. على سبيل المثال، يمكنكم استخدام items لتحديد مخطط كل عنصر في المصفوفة، وminItems وmaxItems لتحديد الحد الأدنى والحد الأقصى لعدد العناصر.
ويُستحسن أيضًا استخدام الكلمة المفتاحية uniqueItems لضمان تفرّد عناصر المصفوفة، إن كان ذلك من متطلبات بياناتكم. وبالجمع بين هذه الكلمات المفتاحية، تبنون مخططًا متينًا يتحقق من بنية المصفوفة ومحتواها بشكل شامل.
أمثلة على حالات الاستخدام
إليكم بعض الأمثلة على حالات استخدام المصفوفات في JSON Schema:
- التحقق من قائمة معرّفات المستخدمين: يمكنكم استخدام مخطط مثل هذا للتحقق من قائمة معرّفات المستخدمين:
{ "type": "array",
"items": {"type": "integer"},
"minItems": 1, "maxItems": 10 }
- التحقق من قائمة أسماء المنتجات: يمكنكم استخدام مخطط مثل هذا للتحقق من قائمة أسماء المنتجات:
{ "type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 5, "uniqueItems": true }
- التحقق من قائمة العناوين: يمكنكم استخدام مخطط مثل هذا للتحقق من قائمة العناوين:
{ "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 }
توضّح هذه الأمثلة كيفية تطبيق مصفوفات JSON Schema على أنواع مختلفة من البيانات، لضمان استيفاء المصفوفات للقيود والمتطلبات المحددة.