我有一个父定义,该子定义使用allOf关键字由子定义扩展。由于我已经在父模型中将所有变量标记为必需,因此在子模型中也将其标记为必需。但是我需要父变量标记为不需要。有什么想法吗?
definitions:
Parent:
type: "object"
required:
- "id"
properties:
id:
type: "integer"
format: "int64"
minimum: 1
example: "123456"
Child:
allOf:
- $ref: "#/definitions/Parent"
type: "object"
required:
- "sample"
properties:
sample:
type: "string"
format: "full-date"
example: "2001/12/31"
答案 0 :(得分:0)
您不能在子模型中取消要求父模型的字段。解决方法是定义一个具有可选属性的基本模型,例如ParentBase
,并从该模型继承Parent
和Child
。
definitions:
ParentBase:
type: object
properties:
id:
type: integer
format: int64
minimum: 1
example: 123456
Parent:
allOf:
- $ref: "#/definitions/ParentBase"
- required:
- id
Child:
allOf:
- $ref: "#/definitions/ParentBase"
- type: object
required:
- sample
properties:
sample:
type: string
format: full-date
example: "2001/12/31"
与此无关,id
属性定义为整数,但其示例值是字符串。这是错误的-示例数据类型应与属性类型匹配。您需要使用123456
不带引号。
id:
type: integer
#example: "123456" # Wrong
example: 123456 # Correct