【发布时间】:2017-09-27 11:30:56
【问题描述】:
我正在定义一个 API,并且我有一个名为“payload”的字段。我们将此字段定义为
“类型”:字符串
然而,在我们的招摇中,那些有效载荷数据开始具有结构。更具体地说,客户端发送 json 对象作为必须遵守某些规则的有效负载数据。例如有效载荷可以是:
{
"bark": true,
"breed": "Dingo"
}
如果有效负载是 Dog 对象或
{
"hunts": true,
"age": 13
}
如果是 Cat 对象。
所以在我最初拥有的 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 文件不会使用此输入“编译”。任何想法如何做到这一点?
【问题讨论】:
-
您的规范是 OpenAPI/Swagger 2.0 还是 OpenAPI 3.0?
oneOf仅在 3.0 中受支持。 -
在文件顶部添加了招摇:“3.0”。我在 editor.swagger.io 工作
-
是否有可能留在 2.0 中并允许参数具有多种类型作为值? editor.swagger dot io 不支持“3.0”
-
1) 是
openapi: 3.0.0,而不是swagger: '3.0'。 2) 不,2.0 不支持多类型值。 -
谢谢@Helen,如果你愿意,可以回答这个问题。这是迁移到 openapi 的正确答案:3.0
标签: json api swagger swagger-2.0