我有一个带有Widget
组件的OpenAPI 3.0.0规范,其中包括一个example
部分:
components:
schemas:
Widget:
properties:
id:
type: string
description:
type: string
cost:
type: float
example:
id: 1234
description: An example widget
cost: 0.10
我要添加一个Warehouse
组件,其中包含Widgets
的列表。有没有办法在example
模式的Widget
模式上使用Warehouse
?像这样:
Warehouse:
properties:
id:
type: string
location:
type: string
widgets:
type: array
items:
$ref: '#/components/schemas/Widget'
example:
id: 4321
widgets:
- $ref: '#/components/schemas/Widget'
以上操作无效。我曾考虑将example
从Widget
模式中移出,移到#/components/examples/WidgetExample
中,但是我仍然不确定要引用什么语法。
答案 0 :(得分:1)
example
关键字不支持$ref
。
您可以做的是更改Warehouse
模式,对除widgets
以外的属性使用属性级别的示例,在这种情况下,widgets
的示例将从“继承” Widget
模式。至少这是它在Swagger UI和Swagger编辑器中的工作方式。
Warehouse:
properties:
id:
type: string
example: 4321 # <----
location:
type: string
example: Sample location # <----
widgets:
type: array
items:
$ref: '#/components/schemas/Widget'
Swagger UI将在请求和响应中显示Warehouse
的以下示例:
{
"id": 4321,
"location": "Sample location",
"widgets": [
"id": 1234,
"description": "An example widget",
"cost": 0.1
]
}