Как сделать два взаимоисключающих свойства raml?
У меня есть тип в raml1.0 с 4 свойствами, и мне нужно реализовать этот случай: два свойства из четырех существуют только исключительно, поэтому, если одно из них существует, другое не должно существовать, и если они оба возникают, сообщение об ошибке проппера брошен пользователю.
Например:
types:
TypeOne:
description: "Need the first two properties exist only mutually exclusively"
type: object
additionalProperties: false
properties:
Prop1:
description: "This is the first property"
type: string
required: true
Prop2:
description: "This should not exist if Prop1 exist"
type: String
required: true (only if Prop1 does not exist)
Prop3:
description: "This is optional if Prop1 exists"
type: string
required: false
Prop4:
description: "This is optional if Prop2 exists"
type: string
required: false
Любая помощь высоко ценится. Кстати, каждый из этих типов - сложный объект. Я упростил его здесь только для презентации.
1 ответ
Решение
Попробуй это:
types:
Base:
properties:
Prop3:
description: "This is optional if Prop1 exists"
type: string
required: false
Prop4:
description: "This is optional if Prop2 exists"
type: string
required: false
TypeOne:
type: Base
additionalProperties: false
properties:
Prop1:
description: "This is the first property"
type: string
required: true
TypeTwo:
type: Base
additionalProperties: false
properties:
Prop2:
description: "This is the first property"
type: string
required: true
MainType:
type: TypeOne | TypeTwo
Документацию для типов объединения можно найти здесь: https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/