Swagger API Docs XOR

时间:2016-01-11 13:21:48

标签: api yaml xor swagger-ui swagger-2.0

我想知道是否有可能在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成为必需?反之?

1 个答案:

答案 0 :(得分:2)

无法对条件属性进行建模,但您可以使用多态来寻找变通方法。您可以使用P和两个子模型(third_propertyC1)创建父模型C2,其中一个(C1first_property另一个(C2)与second_property。使用allOf关键字和discriminator字段,您将获得一个属性为P+C1P+C2的模型。

请参阅documentation中的组合和继承(多态)一章。

  

Swagger允许使用组合和扩展模型定义   JSON Schema的allOf属性,实际上提供了模型组合。   allOf接受经过验证的对象定义数组   独立但共同组成一个对象。

<强>提示:

当您的招摇编辑器使用allOf关键字向您报告以下错误时,请不要感到困惑:不允许其他属性,但属性&lt; foo&gt;已设置

目前已在github上报告了一个错误,请参阅this link