为什么模式从其子模式继承数组项的示例?
Why did a schema inherit examples of array items from its subschema?
打开API 3.0.0,Swagger在线编辑器。
我通过 allOf
鉴别器组成子模式,并为结果模式设置 example
字段。然而,Swagger UI 并未按原样提供示例。
架构包含一个源自子架构的数组。该数组继承了子模式中的示例项,并使用模式中的示例扩展了列表。
例子
假设我们有两个模式:
Cats:
type: object
properties:
cats:
type: array
items:
type: object
properties:
fluffiness:
type: integer
names:
type: string
example:
cats:
- fluffiness: 9
names: "Felix"
- fluffiness: 10
names: "Neko"
FluffiestCats:
allOf:
- $ref: '#/components/schemas/Cats'
- type: object
properties:
date:
type: string
format: "date"
example:
cats:
- fluffiness: 10
names: "Luna"
- fluffiness: 10
names: "Meowie"
date: "17-01-2021"
响应一些请求,API 检索最毛茸茸的猫,引用 #/components/schemas/FluffiestCats/
。 Swagger UI 生成以下响应示例。
{
"cats": [
{
"fluffiness": 9,
"names": "Felix"
},
{
"fluffiness": 10,
"names": "Neko"
},
{
"fluffiness": 10,
"names": "Luna"
},
{
"fluffiness": 10,
"names": "Meowie"
}
],
"date": "17-01-2021"
}
Swagger UI 从 subschema 示例项目中获取两个示例。 提供的示例不会覆盖子模式示例。
- 这种行为是否与规范相矛盾?根据描述,好像是Schema Object's
example
field doesn't imply override, in contrast to the Parameter Object'sexample
字段。
- 如何覆盖子模式示例?或者我是否必须在不使用
allOf
的情况下重新创建架构?
参考资料
It was an issue 与 Swagger UI.
已在 Swagger UI 4.5.0 和 Swagger Editor 4.0.7 中修复。
打开API 3.0.0,Swagger在线编辑器。
我通过 allOf
鉴别器组成子模式,并为结果模式设置 example
字段。然而,Swagger UI 并未按原样提供示例。
架构包含一个源自子架构的数组。该数组继承了子模式中的示例项,并使用模式中的示例扩展了列表。
例子
假设我们有两个模式:
Cats:
type: object
properties:
cats:
type: array
items:
type: object
properties:
fluffiness:
type: integer
names:
type: string
example:
cats:
- fluffiness: 9
names: "Felix"
- fluffiness: 10
names: "Neko"
FluffiestCats:
allOf:
- $ref: '#/components/schemas/Cats'
- type: object
properties:
date:
type: string
format: "date"
example:
cats:
- fluffiness: 10
names: "Luna"
- fluffiness: 10
names: "Meowie"
date: "17-01-2021"
响应一些请求,API 检索最毛茸茸的猫,引用 #/components/schemas/FluffiestCats/
。 Swagger UI 生成以下响应示例。
{
"cats": [
{
"fluffiness": 9,
"names": "Felix"
},
{
"fluffiness": 10,
"names": "Neko"
},
{
"fluffiness": 10,
"names": "Luna"
},
{
"fluffiness": 10,
"names": "Meowie"
}
],
"date": "17-01-2021"
}
Swagger UI 从 subschema 示例项目中获取两个示例。 提供的示例不会覆盖子模式示例。
- 这种行为是否与规范相矛盾?根据描述,好像是Schema Object's
example
field doesn't imply override, in contrast to the Parameter Object'sexample
字段。 - 如何覆盖子模式示例?或者我是否必须在不使用
allOf
的情况下重新创建架构?
参考资料
It was an issue 与 Swagger UI.
已在 Swagger UI 4.5.0 和 Swagger Editor 4.0.7 中修复。