JSON Schema: من الأساسيات إلى الإنتاج
الكلمات المفتاحية كثيرة، لكن لا يُستخدم منها يوميًا إلا نحو دزينة. أتقن type/properties/required/$ref، وأحسِن رسائل الخطأ، فستغطي ثمانين بالمئة من الحالات الحقيقية.
صِف شكل بياناتك بـ JSON Schema، وحوّل الاتفاقات اللفظية إلى تحقق قابل للتنفيذ، ودعها تقود أنواع TypeScript وتوليد النماذج بدورها.
7 مقالةالكلمات المفتاحية كثيرة، لكن لا يُستخدم منها يوميًا إلا نحو دزينة. أتقن type/properties/required/$ref، وأحسِن رسائل الخطأ، فستغطي ثمانين بالمئة من الحالات الحقيقية.
الأنواع والمخططات يغطي كل منهما مقطعًا واحدًا: أحدهما وقت الترجمة والآخر وقت التشغيل. السؤال ليس أيّهما تختار، بل كيف تُبقي الاثنين متزامنين تلقائيًا.
المخططات المولّدة كثيرًا ما تمنع بيانات صالحة. تعلّم لماذا تنتج العينات الأغنى مخططات أسوأ، ثم سير العمل: أخذ عينات متعددة السجلات، والاستكمال الدلالي، وتحديد الأخطاء بدقة.
$ref يحل إعادة الاستخدام، وallOf وoneOf يحلان التركيب، وتكديس الاثنين معًا هو حيث تنكسر الأمور. يغطي المقال $id و$defs والشرطيات والعودية والجمع والتصحيح.
يصدر المدقق أخطاءً آلية، بينما يريد المستخدم معرفة أي مربع إدخال هو الخطأ. يغطي المقال مصفوفة أخطاء Ajv، وinstancePath مقابل schemaPath، والتجميع وصياغة النص.
اجتياز التحقق لا يعني بيانات نظيفة. Pydantic يتجاهل الحقول غير المعروفة افتراضيًا، وZod يزيلها، وAjv يمررها — المعاملات المتخيلة والمفاتيح المكتوبة خطأً تعبر بصمت. يعرض هذا المقال ثلاث صور للقبول الصامت ويقدم طرقًا كاملة: إغلاق الكائنات، والتحكم في تحويل الأنواع، وشد كل مستوى تداخل.
المخطط لا ينتهي عندما يُكتب — هناك يبدأ التدهور. خطأ مطبعي واحد يُرخي التحقق بصمت، وإعادة هيكلة واحدة تكسر جميع العينات. يشرح هذا الدليل منظومة اختبارات عقود قابلة للتنفيذ: عينات إيجابية وسلبية ولقطات حالة، وفحص lint للمخطط نفسه، وتجميع لمرة واحدة مع إعادة استخدام، وأربع بوابات CI تحوّل التغييرات الكاسرة للعقود إلى بنيات حمراء.