第 3 课
数组、枚举与格式
描述列表、允许值、日期、邮箱、URL 与 UUID。
对象描述命名字段。数组、枚举和格式描述这些字段内部常见的约束。
数组
用 items 描述数组中每个元素:
{
"type": "array",
"items": { "type": "string" }
}
如果数组元素是对象,就把对象 schema 放进 items:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": { "type": "string" },
"quantity": { "type": "integer", "minimum": 1 }
},
"required": ["sku", "quantity"]
}
}
枚举
enum 把值限制在一个已知集合中:
{
"type": "string",
"enum": ["draft", "published", "archived"]
}
枚举适合工作流状态、模式、角色和受控标签。不要把经常在代码外变化的值做成枚举,例如客户名称。
格式
format 为字符串添加语义:
emailuriuuiddatedate-time
不同校验器对 format 的执行严格程度不同。很多库需要额外包或额外选项才会真正校验 format。把它当作有用的校验线索,而不是领域校验的替代品。
生成出来的 schema 仍需审查
Schema 生成器可以从示例中推断有用的默认结构,但示例只说明“这次出现了什么”。发布为契约前,应人工审查数组、枚举和格式。