Swagger OpenAPI 3.0通用数据类型
我怎样才能最好地描述一个包含OpenAPI3中真实数据类型的通用响应类型 简化示例:Swagger OpenAPI 3.0通用数据类型,swagger,openapi,Swagger,Openapi,我怎样才能最好地描述一个包含OpenAPI3中真实数据类型的通用响应类型 简化示例: ApiResponse: data: object error: string 但是/users端点应该给出: ApiResponse<List<User>> apis响应 这基本上是: ApiResponse: data: List<User> error: string apis响应: 数据:列表 错误:字符串 目前看来这是不可能的,但我只是想确
ApiResponse:
data: object
error: string
但是/users端点应该给出:
ApiResponse<List<User>>
apis响应
这基本上是:
ApiResponse:
data: List<User>
error: string
apis响应:
数据:列表
错误:字符串
目前看来这是不可能的,但我只是想确定一下。
我想现在最好的方法是对每个调用进行命名响应,并使用allOf引用ApiResponse和实现数据:specific value。我搜索了很多泛型类型,但没有办法在OpenAPI3中定义泛型类型。最简单的方法是同时使用allOf和$ref。假设有一个列表架构,如下所示:
List:
type: object
properties:
page_number:
type: integer
page_count:
type: integer
书的模式是
Book:
type: object
properties:
title:
type: string
summary:
type: string
要返回列表,路径为:
/api/v1/books:
get:
responses:
default:
description: description text
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/List'
- type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Book'
结果是
{
"page_number": 1,
"page_count": 10,
"items": [{
"title": "title",
"description": ""
},
... ]
}
实际上,这是一张书单。如您所见,可以同时将列表的主要属性添加到结果和列表项类型中。您也可以为其他人重复此模式:
/api/v1/authors:
get:
responses:
default:
description: description text
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/List'
- type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Author'
好的,您可以使用type
object
和additionalProperties
以及true值来获得自由形式的对象。在Swagger Hubin OAS 3[main]WARN o.o.codegen.DefaultCodegen-allOf上进行检查,并定义了多个模式。仅使用第一个:List
由此生成的控制器类似乎只返回allOf下定义的一个项目,尽管它在生成的文档中看起来是正确的。我认为这是行不通的。至少对于Java Spring code gen来说是这样。规范中也记录了这种方法: