JSON Schema: از مبانی تا تولید
کلیدواژههای زیادی وجود دارد، اما فقط حدود یک دوجین روزمره استفاده میشوند. type/properties/required/$ref را درست بگیرید، پیام خطا را خوب مدیریت کنید و هشتاد درصد موارد واقعی را پوشش دادهاید.
شکل دادهتان را با JSON Schema توصیف کنید، توافق شفاهی را به اعتبارسنجی اجراشدنی تبدیل کنید و بگذارید بهنوبه خود نوعهای TypeScript و تولید فرم را براند.
7 مقالهکلیدواژههای زیادی وجود دارد، اما فقط حدود یک دوجین روزمره استفاده میشوند. type/properties/required/$ref را درست بگیرید، پیام خطا را خوب مدیریت کنید و هشتاد درصد موارد واقعی را پوشش دادهاید.
نوعها و schemaها هر یک یک بازه را پوشش میدهند: یکی زمان کامپایل، یکی زمان اجرا. پرسش این نیست کدام انتخاب شود، بلکه چگونه این دو خودکار همگام بمانند.
schemaهای تولیدشده غالباً داده معتبر را مسدود میکنند. یاد بگیرید چرا نمونههای پرمحتواتر schemaهای بدتری میسازند، سپس گردش کار: نمونهگیری چندرکوردی، تکمیل معنایی، مکانیابی خطا.
$ref بازاستفاده را حل میکند، allOf و oneOf ترکیب را، و رویهم گذاشتن هر دو جایی است که چیزها میشکنند. $id، $defs، شرطیها، بازگشت، بستهبندی و عیبیابی را پوشش میدهد.
اعتبارسنج خطاهای ماشینی میدهد؛ کاربران میخواهند بدانند کدام جعبه ورودی اشتباه است. آرایه errors در Ajv، instancePath در برابر schemaPath، گروهبندی و جملهبندی را پوشش میدهد.
قبولی اعتبارسنجی به معنای داده تمیز نیست. Pydantic بهطور پیشفرض فیلدهای ناشناخته را نادیده میگیرد، Zod آنها را حذف میکند و Ajv رد میکند — پارامترهای توهمی و کلیدهای غلط املایی بیصدا عبور میکنند. این مقاله سه شکل پذیرش بیصدا را نشان میدهد و دستور کامل میدهد: بستن اشیا، کنترل تبدیل نوع، سفتکردن هر سطح تودرتو.
اسکیما با نوشتن تمام نمیشود — از همانجا زوال آغاز میشود. یک غلط تایپی بیصدا اعتبارسنجی را شل میکند، یک ریفکتور همه فیکسچرها را میشکند. این راهنما ساختاری عملی برای تست قرارداد ارائه میدهد: فیکسچرهای مثبت، منفی و اسنپشات، لینت خودِ اسکیما، کامپایل یکباره و استفاده مجدد، و چهار دروازه CI که شکست قرارداد را به بیلد قرمز تبدیل میکند.