我有一个包含两个字段的 JSON 架构。fieldA和fieldB,fieldA是一个枚举,fieldB是一个字符串。我想根据 fieldA 的值对 fieldB 的长度添加一些验证。
properties:
fieldA:
enum:
- VAL1
- VAL2
- VAL3
fieldB:
type: string
pattern: '^[<a-z>{10}|<a-z>{5}]$'
Run Code Online (Sandbox Code Playgroud)
我想验证如果 fieldA 等于 VAL1,则 fieldB 的长度应为 5,否则 fieldB 的长度应为 10。如何添加此类验证检查?
答案取决于您使用的是 OpenAPI 2.0 ( swagger: '2.0') 还是 OpenAPI 3.0 ( openapi: 3.0.0)。
OpenAPI 2.0 不支持条件依赖。您只能在description.
您可以使用oneOfOpenAPI 3.0 来描述条件依赖关系,类似于在 JSON Schema 中的做法。下面的示例基于JSON 架构条件依赖 value的答案。
请注意,虽然oneOf是 OpenAPI 规范的一部分(例如,您可以编写包含 的 API 定义oneOf),但实际工具支持oneOf可能会有所不同。
type: object
required:
- fieldA
properties:
fieldA:
type: string
enum:
- VAL1
- VAL2
- VAL3
fieldB:
type: string
pattern: '^[a-z]+$'
oneOf:
# If fieldA = VAL1, then fieldB must be 5 chars long
- properties:
fieldA:
enum: [VAL1]
fieldB:
minLength: 5
maxLength: 5
# Otherwise (if fieldA = VAL2 or VAL3) fieldB must be 10 chars long
- properties:
fieldA:
enum: [VAL2, VAL3]
fieldB:
minLength: 10
maxLength: 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3272 次 |
| 最近记录: |