当前位置: 首页 > 知识库问答 >
问题:

如何在swagger规范中定义两个属性中的任何一个都不是null并且是必需的

孟英锐
2023-03-14

我要求在有效负载中有两个属性,比如属性1和属性2。两者都是数组类型。条件是,要么两者都可以有值,要么其中只有一个为非空。但两者不能同时为空。我如何在swagger规范中定义这个需求,这样我就可以实施模式,使得两者都不应该为空,但是其中任何一个都可以为空。

有效示例:

Ex1--> {"Property1": ["value1"], "Property2": ["value2"]}  
Ex2--> {"Property2": ["value2"]} 
Ex3--> {"Property1": ["value1"]}

无效示例:

{"Property1": [], "Property2": []}

共有1个答案

王景山
2023-03-14

假设对象只能包含这两个属性(Property1和/或Property2),而没有其他属性,则可以使用对象级 和数组级 minItems

MyObject:
  type: object
  minProperties: 1  # <-- requires at least one of Property1 or Property2 to be present
  properties:
    Property1:
      type: array
      items:
        type: string
      minItems: 1   # <-----
    Property2:
      type: array
      items:
        type: string
      minItems: 1   # <-----

如果有效载荷还可以包含其他属性,则可以使用anyOf所需定义“

# openapi: 3.x.x

MyObject:
  type: object
  anyOf:   # <----------------
    - required: [Property1]
    - required: [Property2]
  properties:
    Property1:
      type: array
      items:
        type: string
      minItems: 1
    Property2:
      type: array
      items:
        type: string
      minItems: 1
    SomeOtherProperty:
      ...

 类似资料:
  • 我有一个JSON模式文件,其中一个属性被定义为或: 当转换为YAML(用于OpenAPI/Swagger)时,它变为: 在OpenAPI中定义可为null属性的正确方法是什么?

  • 如何在OpenAPI/Swagger中定义一个字段是可选的或必需的,缺省的是什么?

  • 我试图用一个静态的swagger文件来记录一个API,该文件可以返回一些JSON,其中包含一个类似如下的数组: 我尝试了几种不同的方法来定义规范,使用多态性或显式定义多个示例。这些例子要么最终看起来像: 或者只是: 有没有办法在我的swagger规范中定义一个示例,以便swagger-ui显示的示例有效负载将包含一个数组,该数组包含一个A类型的示例和一个B类型的示例,就像我编写的第一个JSON一样

  • 我使用swagger生成类在Java和类型脚本。我有问题定义映射属性与对象列表为值。我试图定义如下: 上面的yml定义在java中生成以下代码: 如何配置yml以生成包含数据列表的密钥?类似于下面的类: 或 这是否可能与大摇大摆2.0?我正在考虑定义另一个扩展ArrayList的DataList类,然后将该类用作映射的值。 --------------更新 谢谢@nickb 我使用swagger-

  • 我想要一个方法,它返回一个Object,该Object被赋予一个类,该类取决于传递的String的值 然后,我希望能够打印出一个属性(例如对象属性),我知道它将由类名可以表示的所有可能的类持有。可能的类在单独的文件中定义。但是编译器给错误找不到符号对象属性。我如何访问这个对象的属性? 抱歉,问题措辞不当 感谢您的任何帮助

  • 问题内容: jQuery是否有任何语法方法来定义多个CSS属性,而无需像这样将所有内容都放在右边: 如果您有20条这样的代码,那么您将很难阅读,有什么解决方案吗? 例如,通过jQuery API,jQuery可以理解并返回正确的值 和 请注意,对于DOM表示法,属性名称周围的引号是 可选的 ,但对于CSS表示法,由于名称中的连字符,因此 必须 使用引号。 问题答案: 即使您有1个或更多,也最好只使