Swagger API 文档 XOR
Swagger API Docs XOR
我想知道是否可以大摇大摆地使用 XOR。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 成为必需项?
无法对条件属性建模,但您可以使用多态性寻求解决方法。您可以创建一个父模型 P
和 third_property
以及两个子模型(C1
和 C2
),一个 (C1
) 和 first_property
另一个 (C2
) 和 second_property
。使用 allOf
关键字和 discriminator
字段,您将获得属性形式为 P+C1
或 P+C2
.
的模型
请参阅 documentation 中的 组合和继承(多态) 一章。
Swagger allows combining and extending model definitions using the
allOf property of JSON Schema, in effect offering model composition.
allOf takes in an array of object definitions that are validated
independently but together compose a single object.
提示:
当您的 swagger 编辑器使用 allOf
关键字向您报告以下错误时,请不要感到困惑:不允许使用其他属性,但 属性 已设置
目前有一个错误已在 github 上报告,请参阅 this link。
在 OpenAPI 3.1 中,这似乎现在工作得更好:https://community.smartbear.com/t5/Swagger-Open-Source-Tools/Defining-conditional-attributes-in-OpenAPI/m-p/222693#M2058
我想知道是否可以大摇大摆地使用 XOR。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 成为必需项?
无法对条件属性建模,但您可以使用多态性寻求解决方法。您可以创建一个父模型 P
和 third_property
以及两个子模型(C1
和 C2
),一个 (C1
) 和 first_property
另一个 (C2
) 和 second_property
。使用 allOf
关键字和 discriminator
字段,您将获得属性形式为 P+C1
或 P+C2
.
请参阅 documentation 中的 组合和继承(多态) 一章。
Swagger allows combining and extending model definitions using the allOf property of JSON Schema, in effect offering model composition. allOf takes in an array of object definitions that are validated independently but together compose a single object.
提示:
当您的 swagger 编辑器使用 allOf
关键字向您报告以下错误时,请不要感到困惑:不允许使用其他属性,但 属性
目前有一个错误已在 github 上报告,请参阅 this link。
在 OpenAPI 3.1 中,这似乎现在工作得更好:https://community.smartbear.com/t5/Swagger-Open-Source-Tools/Defining-conditional-attributes-in-OpenAPI/m-p/222693#M2058