第 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 为字符串添加语义:

  • email
  • uri
  • uuid
  • date
  • date-time

不同校验器对 format 的执行严格程度不同。很多库需要额外包或额外选项才会真正校验 format。把它当作有用的校验线索,而不是领域校验的替代品。

生成出来的 schema 仍需审查

Schema 生成器可以从示例中推断有用的默认结构,但示例只说明“这次出现了什么”。发布为契约前,应人工审查数组、枚举和格式。

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览