相互排斥地挥毫

时间:2019-04-10 14:54:36

标签: swagger openapi

如何指示在my_object中可以拥有property_1或property_2,但不能同时拥有两者?

my_object:
  type: object
  properties:
    property_1:
      type: string
    property_2:
      type: string

2 个答案:

答案 0 :(得分:2)

OpenAPI 3.0 openapi: 3.0.0)中,可以使用oneOf关键字定义互斥条件。此架构要求存在property_1property_2,但不能同时存在:

my_object:
  type: object
  properties:
    property_1:
      type: string
    property_2:
      type: string
    property_3:
      type: string
  oneOf:
    - required: [property_1]
    - required: [property_2]

如果必须存在这两个属性中的至少一个,请改用anyOf


如果您使用 OpenAPI 2.0 swagger: "2.0"),则它不支持oneOf,因此只能在模式描述或属性描述中以语言形式记录此条件。

答案 1 :(得分:0)

您可能要切换到OpenAPI 3.0,该API支持oneOf关键字以定义互斥条件:

这是一个示例:

 my_object:
 type: object
 properties:
   property_1:
     type: string
   property_2:
    type: integer
 oneOf:
- required: [property_1]
- required: [property_2]