Swagger API文档 XOR

4

我想知道是否可以在swagger.yaml/json中使用异或运算符。 例如,如果我有以下内容:

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为必填项?反之亦然。
2个回答

5

条件属性无法建模,但您可以使用多态性来解决问题。您可以创建一个具有third_property的父模型P和两个子模型(C1C2),一个子模型(C1)具有first_property,另一个子模型(C2)具有second_property。使用allOf关键字和discriminator字段,您将获得一个来自 P+C1P+C2 属性的模型。

请参见文档中的组合和继承(多态性)一章节。

Swagger允许使用JSON Schema的allOf属性来合并和扩展模型定义,从而提供模型合成。allOf接收一个对象定义的数组,这些对象定义单独验证,但一起组成一个单独的对象。

提示:

当使用allOf关键字时,如果您的Swagger编辑器报告以下错误,请不要感到困惑:不允许有附加属性,但已设置属性<foo>

目前存在一个已在github上报告的错误,详情请参见此链接


那帮了我大忙。非常感谢你。(: - GiftZwergrapper


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接