Scala 告诉Swagger请求主体可以是单个对象或对象列表

Scala 告诉Swagger请求主体可以是单个对象或对象列表,scala,rest,swagger,openapi,Scala,Rest,Swagger,Openapi,我正在使用Scala中的Swagger来记录我的RESTAPI。我希望为POST、PUT和DELETE启用批量操作,并希望相同的路由接受单个对象或对象集合作为正文内容 有没有办法告诉Swagger参数是类型a的值列表还是类型a的单个值 类似于varargs for REST的东西。我不知道是否可以像那样用Swagger注释您的API。但我的建议是简化/统一API。如果你想一想,如果你打算支持bulk(意思是一个对象数组),那么没有理由对单个对象进行特殊处理。您只需将API更改为始终使用数组,如果

我正在使用Scala中的Swagger来记录我的RESTAPI。我希望为POST、PUT和DELETE启用批量操作,并希望相同的路由接受单个对象或对象集合作为正文内容

有没有办法告诉Swagger参数是类型a的值列表还是类型a的单个值


类似于varargs for REST的东西。

我不知道是否可以像那样用Swagger注释您的API。但我的建议是简化/统一API。如果你想一想,如果你打算支持bulk(意思是一个对象数组),那么没有理由对单个对象进行特殊处理。您只需将API更改为始终使用数组,如果有人想要使用单个对象,那么这就是带有单个元素的列表的情况
object::Nil

有没有办法告诉Swagger参数是类型a的值列表还是类型a的单个值

这取决于您使用的是OpenAPI 3.0还是OpenAPI(Swagger)2.0

OpenAPI使用JSON模式的扩展子集来描述主体有效负载。JSON模式提供了
oneOf
anyOf
关键字来为一个实例定义多个可能的模式。但是,不同版本的OpenAPI支持不同的JSON模式关键字集

OpenAPI 3.0支持
oneOf
anyOf
,因此您可以如下描述此类对象或对象数组:

openapi:3.0.0
...
组件:
模式:
A:
类型:对象
正文:
其中一项:
-$ref:“#/components/schemas/A”
-类型:数组
项目:
$ref:“#/components/schemas/A”
在上面的示例中,
Body
可以是object
A
或objects
A
数组

OpenAPI(招摇过市)2.0。您最多只能使用:

swagger:'2.0'
...
定义:
A:
类型:对象
#请注意,主体没有“类型”
正文:
描述:可以是对象'A'或'A'的数组`
这意味着
Body
可以是任何东西—一个对象(任意对象!)、一个数组(包含任意项!)以及一个原语(字符串、数字等)。在这种情况下,无法定义确切的
正文
结构。您只能在
说明
中口头描述


您需要使用OpenAPI 3.0来定义您的确切场景。

如果您想发送对象,只需删除@OA\Items()


谢谢你把它挖出来。这是一个公认的缺点,希望将来会得到一些关注,因为它确实会妨碍对现有API(如GeoJSON)进行适当的文档记录。这个链接增加了讨论的内容:我想现在我只需要用文字正确地记录“列表或单个对象”样式。。。。而且它只需要两个字符:
[
]
 *   @OA\RequestBody(
 *      required=true,
 *      @OA\JsonContent(
 *         ref="#/components/schemas/Brand"
 *      )
 *   ),