我想知道是否有可能在swagger.yaml / json中使用XOR 如果我有这样的东西,例如:
PostableEntity:
properties:
first_property:
type: string
second_property:
type: string
minLength: 1
description: foo
third_property:
type: number
required:
- third_property
现在,如果没有设置second_property,那么如何才能使first_property成为必需?反之?
答案 0 :(得分:2)
无法对条件属性进行建模,但您可以使用多态来寻找变通方法。您可以使用P
和两个子模型(third_property
和C1
)创建父模型C2
,其中一个(C1
)first_property
另一个(C2
)与second_property
。使用allOf
关键字和discriminator
字段,您将获得一个属性为P+C1
或P+C2
的模型。
请参阅documentation中的组合和继承(多态)一章。
Swagger允许使用组合和扩展模型定义 JSON Schema的allOf属性,实际上提供了模型组合。 allOf接受经过验证的对象定义数组 独立但共同组成一个对象。
<强>提示:强>
当您的招摇编辑器使用allOf
关键字向您报告以下错误时,请不要感到困惑:不允许其他属性,但属性&lt; foo&gt;已设置
目前已在github上报告了一个错误,请参阅this link。