OpenAPI 3:如何定义元素顺序固定的自定义Schema对象数组?
在OpenAPI中定义固定顺序的结构化数组
可以实现。在OpenAPI 3.0及以上版本中,你可以通过将数组Schema的items字段设为数组形式,来指定每个位置必须匹配的已定义Schema,以此强制数组元素的顺序和类型严格符合要求。
比如针对你需要的[Dog, Duck, Dog, Cat, Cat]结构,示例定义如下:
components: schemas: # 先定义基础Schema Cat: type: object properties: meow: type: string Dog: type: object properties: bark: type: string Duck: type: object properties: quack: type: string swim: type: boolean # 定义固定顺序的数组Schema FixedOrderPetArray: type: array items: - $ref: '#/components/schemas/Dog' # 第1个元素必须是Dog - $ref: '#/components/schemas/Duck' # 第2个元素必须是Duck - $ref: '#/components/schemas/Dog' # 第3个元素必须是Dog - $ref: '#/components/schemas/Cat' # 第4个元素必须是Cat - $ref: '#/components/schemas/Cat' # 第5个元素必须是Cat minItems: 5 # 强制数组长度为5,不能少元素 maxItems: 5 # 强制数组长度为5,不能多元素
这里的核心逻辑是:
items数组的每个元素对应目标数组中相同索引位置的元素Schema- 配合
minItems和maxItems锁定数组长度,避免出现元素数量不符的情况 - 只有OpenAPI 3.0+支持这种
items的数组写法,OpenAPI 2.0不支持该特性
内容的提问来源于stack exchange,提问作者Nicola Peluchetti
相关产品推荐
相关产品推荐

