要求数组在 Swagger Schema Object 定义中至少包含一个元素
Posted
技术标签:
【中文标题】要求数组在 Swagger Schema Object 定义中至少包含一个元素【英文标题】:Require array to contain at least one element in Swagger Schema Object definition 【发布时间】:2016-10-28 08:12:36 【问题描述】:我的swagger.yaml
中有这样的架构对象定义:
User:
type: object
properties:
username:
type: string
description: the user name
colors:
type: array
items:
type: string,
enum: [ "red", "blue", "green" ]
description: user must have one or more colors associated
required:
- username
- colors
但是,生成的服务器仍然乐于接受使用此架构对象作为不包含任何 colors
字段的必需主体参数的 POST 请求。
我能否以 color
字段在 User
架构对象中始终需要并且理想情况下还必须包含来自枚举的至少一个或多个项目的方式配置 Swagger?
【问题讨论】:
问题实际上是曾经从事该项目工作的人编写的自定义验证代码没有正确处理 Swagger 生成的注释,因此无法正常工作。投票结束我的问题,因为它因本问题范围之外的原因而消失。 【参考方案1】:使用minItems: 1
。此外,您可以在数组中强制执行 uniqueItems
。
colors:
type: array
minItems: 1
uniqueItems: true
items:
type: string
enum: [ "red", "blue", "green" ]
【讨论】:
以上是关于要求数组在 Swagger Schema Object 定义中至少包含一个元素的主要内容,如果未能解决你的问题,请参考以下文章
Swagger 声明 schema = @Schema(implementation = Map.class) 将 Schema 表示为 swagger-ui 中的 String
compojure-api/schema/swagger 中的非必需参数?