这是一个有着类似标题here的问题,但是 只有答案没有完全回答这个问题,所以希望这样的事情 自从我再次尝试以来已经改变了。
我有Car
的模型,我想用GET
次请求创建我需要name
的新实例。
此外,我想在PUT
次请求中使用它来更新现有实例。更新请求不应具有所有属性,路径中已指定Car
标识符,并且只有当前属性才会被合并'进入现有对象。
我尝试使用以下规范:
CarProperties:
type: object
properties:
name:
type: string
title: Car Name
description: A friendly name for this car.
minLength: 1
md:
type: object
hidden: 'true'
description:
type: string
title: Car Description
description: A detailed description of the car.
md:
type: object
hidden: 'true'
UpdateCar:
allOf:
- { $ref: '#/definitions/CarProperties' }
type: object
NewCar:
allOf:
- { $ref: '#/definitions/CarProperties' }
type: object
required: [name]
我希望name
只有NewCar
所需的属性,但在NewCar
和UpdateCar
中,属性name
都是可选的。
如何从引用的模型中指定所需属性的子集?
答案 0 :(得分:1)
在摆弄一段时间之后,似乎我对required
字段的缩进很差。以下语法似乎产生了我想要的东西:
CarProperties:
type: object
properties:
name:
type: string
title: Car Name
description: A friendly name for this car.
minLength: 1
md:
type: object
hidden: 'true'
description:
type: string
title: Car Description
description: A detailed description of the car.
md:
type: object
hidden: 'true'
UpdateCar:
allOf:
- { $ref: '#/definitions/CarProperties' }
- type: object
NewCar:
allOf:
- { $ref: '#/definitions/CarProperties' }
- type: object
required: [name]
现在我有:
NewCar
具有必填name
字段的实体。UpdateCar
具有可选name
字段的实体。Car
,我只需要在一个地方添加。