cat*_*eof 7 api json swagger swagger-2.0
我正在定义一个 API,并且有一个名为“payload”的字段。我们将该字段定义为
“类型”:字符串
然而,在我们的狂妄中,这些有效负载数据开始具有结构。更具体地说,客户端发送 json 对象作为必须遵守某些规则的有效负载数据。例如有效负载可以是:
{
"bark": true,
"breed": "Dingo"
}
Run Code Online (Sandbox Code Playgroud)
如果有效负载是 Dog 对象或
{
"hunts": true,
"age": 13
}
Run Code Online (Sandbox Code Playgroud)
如果它是一个 Cat 对象。
所以在 yaml 文件中我最初有:
payload:
$ref: "#/definitions/payloaddata"
Run Code Online (Sandbox Code Playgroud)
在定义区域我有:
payloaddata:
type: "object"
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
Run Code Online (Sandbox Code Playgroud)
组件定义为:
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
Run Code Online (Sandbox Code Playgroud)
但是,yaml 文件不会使用此输入“编译”。有什么想法如何做到这一点?
接受的解决方案对我不起作用:独立于声明openapi: 3.0.0,模型定义无法编译。
然而,这对我有用:
定义:
TestModel:
type: object
oneOf:
- $ref: '#/components/schemas/Foo'
- $ref: '#/components/schemas/Bar'
Run Code Online (Sandbox Code Playgroud)
型号用途:
testmodel:
$ref: '#/components/schemas/TestModel'
Run Code Online (Sandbox Code Playgroud)
希望它对其他人有用。
oneOfOpenAPI 3.0 支持,但 OpenAPI/Swagger 2.0 不支持。openapi: 3.0.0只要您的规范指定而不是 .您发布的代码就可以swagger: '2.0'。您可能还需要更改规范中的其他一些内容,例如#/definitions/->#/components/schemas/...等。
| 归档时间: |
|
| 查看次数: |
13938 次 |
| 最近记录: |