我为一个API定义了一些傲慢的定义,我遇到了这个用例。
请求和响应对象模型定义看起来完全相同。但是,对象中有一个字段在get操作期间返回更多枚举值,但限制put操作的最小枚举值。是否可以有条件地引用同一字段的不同枚举值,从而避免重复定义。为了克服这一限制,我不想为请求和响应重新创建整个模型定义。
这是我的例子,
definitions:
EntryRequest:
properties:
entries:
$ref: '#/definitions/EntityResponse/properties/entries'
EntryResponse:
properties:
entries:
type: array
items:
$ref: '#/definitions/Entry'
Entry:
properties:
entryStatus:
type: string
enum:
- ENABLE
- DISABLE
- IN_PROGRESS
在上面,有两件事我很担心。1)对于EntryRequest,API只接受启用/禁用PUT操作,而API在GET操作中返回所有这些操作。我想有条件地创建对entryStatus属性的引用。另外,除了entryStatus之外,对于EntryRequest和EntryResponse对象模型,一切都是相同的。为了表示entryStatus字段的差异,我也不想重复这一点。
有办法吗?
编辑:当我了解到更多这方面的内容时,我感觉这更像是一个与yaml相关的查询。但我想在这里看看是否有人遇到过类似的情况,以及他们是如何处理的。或者看看能不能给我建议如何处理这件事。在同一个领域里标记不同的枚举,我想我可以这样做,
RequestEntryStatus:
type: string
enum: &requestStatus
- ENABLE
- DISABLE
ResponseEntryStatus:
type: string
enum: &responseStatus
- ENABLE
- DISABLE
- IN_PROGRESS
Entry:
properties:
entryStatus: *requestStatus
但是,这仍然会强制我创建请求和响应对象的副本,并将其映射到entryStatus字段。我想知道是否有更好的方法来处理这件事。
发布于 2017-04-11 19:32:12
请求和响应对象模型定义看起来完全相同。但是,对象中有一个字段在get操作期间返回更多枚举值,但限制put操作的最小枚举值。是否可以有条件地引用相同字段的不同枚举值,从而避免重复定义。,我不想为了克服这个限制而重新创建请求和响应的整个模型定义。
不,这不可能。
如果您想避免重复,您可以在所有枚举值中使用单个模型,但在description
中口头记录某些值仅用于响应,而不用于请求。
https://stackoverflow.com/questions/38256261
复制相似问题