允许某个对象在某处放置一些类型
问题描述:
我正在定义一个API,并且我有一个名为“有效内容”的字段。我们有这个字段定义为允许某个对象在某处放置一些类型
“类型”:字符串
我们招摇但是开始的有效载荷数据有结构。更特别的是,客户端发送json对象作为必须遵守某些规则的有效载荷数据。例如有效载荷可以是:
{
"bark": true,
"breed": "Dingo"
}
如果有效载荷是一个Dog对象或
{
"hunts": true,
"age": 13
}
如果它是一个猫的对象。
所以在YAML文件我最初有:
payload:
$ref: "#/definitions/payloaddata"
,并在定义方面,我有:
payloaddata:
type: "object"
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
组成要素被定义为:
components:
schemas:
Dog:
type: object
properties:
bark:
type: boolean
breed:
type: string
enum: [Dingo, Husky, Retriever, Shepherd]
Cat:
type: object
properties:
hunts:
type: boolean
age:
type: integer
然而, yaml文件不会使用此输入“编译”。任何想法如何做到这一点?
答
oneOf
在OpenAPI 3.0中受支持,但在OpenAPI/Swagger 2.0中不受支持。只要您的规范指定openapi: 3.0.0
而不是swagger: '2.0'
,您发布的代码就没有问题。您可能还需要更改规范中的其他内容,例如#/definitions/
- >#/components/schemas/...
等等。
+0
我花费了太多时间直到找到答案...谢谢! –
是你的规格OpenAPI/Swagger 2.0或OpenAPI 3.0? 'oneOf'仅在3.0中受支持。 – Helen
增加了swagger:文件顶部的“3.0”。我在editor.swagger.io工作 – cateof
是否有可能停留在2.0并允许参数具有多个类型作为值? editor.swagger dot io不支持“3.0” – cateof