JSON Schema: الاختبار يثبت القواعد التي كتبتها فقط

JSON صالح القراءة قد لا يصلح لطلبك. يساعد المخطط على توضيح شكل البيانات المتوقع، لكنه لا يستطيع فرض شرط لم تذكره أو التحقق من حقيقة خارج البيانات.

وجود الحقل غير نوع قيمته

وصف الحقل داخل properties يحدد شروطه عندما يوجد، ولا يجعله إلزاميًا وحده. استخدم required عندما يجب أن يصل الحقل فعلًا.

العدد 3 والنص "3" مختلفان. نجاح أحدهما لا يعني أن الآخر سيُحوّل تلقائيًا؛ صمّم العقد وفق ما يحتاجه المستهلك بدل الاعتماد على التخمين.

المراجع: JSON Schema — Properties, required fields and additional properties

قرر موقفك من الحقول الزائدة

إضافة additionalProperties: false تمنع الحقول غير المعرّفة في المخطط البسيط. قد يساعد ذلك على كشف خطأ إملائي في اسم الحقل، لكنه يحتاج تحديثًا مقصودًا عندما يتوسع العقد.

اختبر مثالًا يفتقد حقلًا وآخر يحتوي نوعًا خاطئًا وثالثًا يضيف حقلًا. النتيجة تصبح مفهومة عندما تعرف أي شرط تريد لكل مثال.

المراجع: JSON Schema — Properties, required fields and additional properties

مطابقة المخطط ليست موافقة على الطلب

أداة ToolRoof تتحقق محليًا من نطاق محدد من Draft 2020-12. لا تجلب مخططات عن بعد ولا تدعم كل الكلمات المفتاحية، وتعلن رفض الخاصية غير المدعومة بدل اعتبارها نجاحًا.

النجاح لا يثبت وجود المنتج أو صحة السعر في قاعدة بيانات أو صلاحية المستخدم. كما أن default وصف افتراضي لا يعني تعبئة حقل مفقود في بياناتك داخل هذا الفاحص.

مثال: كمية مطلوبة دون تحويل خفي للنوع

لعقد يطلب كائنًا فيه quantity من نوع integer وبحد أدنى 1، ويضع quantity داخل required ويمنع الخصائص الإضافية: {"quantity":3} ينجح، أما {"quantity":"3"} فيفشل بسبب النوع.

الكائن {} يفشل لغياب الحقل، و{"quantity":3,"note":"draft"} يفشل للخاصية الزائدة. ومع ذلك، نجاح الكمية 3 لا يثبت وجود هذا العدد في المخزون؛ تلك قاعدة خارج المثال.

المراجع