Scala 告诉Swagger请求主体可以是单个对象或对象列表
我正在使用Scala中的Swagger来记录我的RESTAPI。我希望为POST、PUT和DELETE启用批量操作,并希望相同的路由接受单个对象或对象集合作为正文内容 有没有办法告诉Swagger参数是类型a的值列表还是类型a的单个值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更改为始终使用数组,如果
类似于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
可以是objectA
或objectsA
数组
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"
* )
* ),