假设我有如下定义:
definitions:
assetList:
type: object
properties:
assets:
type: array
items:
type: object
properties:
id:
type: string
description: ID
total:
type: integer
description: total
我在许多端点上引用了这个定义,但是有一个端点只响应assets
下具有ID
属性的对象,并且它不在数组中。
通常的引用方式是作为响应主体$ref: '#/definitions/assetList'
,但这包括整个定义。有没有什么方法可以引用assets
数组中的对象而不创建一个完整的新定义?
答案 0 :(得分:0)
有没有什么方法可以引用资产数组中的对象而不创建一个完整的新定义?
不确定你的意思"全新"这里的定义。常见的解决方案是在单独的定义中提取对象,并从assetList
和响应主体引用它:
...
responses:
200:
description: OK
schema:
$ref: '#/definitions/myObject' # <----
definitions:
assetList:
type: object
properties:
assets:
type: array
items:
$ref: '#/definitions/myObject' # <----
total:
type: integer
description: total
myObject: # <-----
type: object
properties:
id:
type: string
description: ID
如果您的意思是不想提取内部架构,则可能(取决于您使用的工具)直接引用内部架构:
$ref: '#/definitions/assetList/properties/assets/items'
#/foo/bar/...
语法是JSON Pointer,它允许指向JSON结构中的任何元素(或者在本例中为YAML结构)。
但实际上,不鼓励这样的引用,有些工具可能不支持它们。