angular - 如何为此字段编写多种类型的 OpenAPI (Swagger) 定义?
问题描述
我正在为字段编写 OpenAPI 定义,该params
字段是一个对象并包含一个名为 的字段name
,该字段默认为字符串类型,但可以是任何类型,例如整数、数字、布尔值、字符串或字符串数组、布尔值、数,整数。
参数:{ [名称:字符串]:int | 字符串 | 号码 | 布尔值 | 整数[] | 字符串[] | 号码[] | 布尔[] }
如何在 OpenAPI 中定义这样的字段?
我试过以下
params:
description: Simple parameters map
type: object
additionalProperties:
name:
type: object
oneOf:
- type: string
- type: boolean
- type: integer
- type: number
- type: array
items:
- string
- integer
- number
- boolean
但这会产生以下语法错误:
不应包含其他属性名称。
解决方案
params是一个对象,包含名为name的字段,默认情况下它是字符串类型,它可以是任何类型,如下所述:。整数、数字、布尔字符串或字符串数组、布尔值、数字、整数。它可以是任何东西。
“可以是任何东西”是通过根本不指定 来定义的type
。但是在这种情况下,可能的“任何”值包括您没有提到的对象和对象数组。
params:
description: Simple parameters map
type: object
properties:
name: {}
# OR if you want to add a description, use
# name:
# description: Can be anything
但是,如果“任何内容”仅表示您列出的特定类型,则需要anyOf
. 请注意,anyOf
在 OpenAPI 3.0 ( openapi: 3.0.0
) 中受支持,在 OpenAPI/Swagger 2.0 ( swagger: "2.0"
) 中不受支持。
# openapi: 3.0.0
params:
type: object
properties:
name:
anyOf:
- type: string
- type: integer
- type: number
- type: boolean
- type: array
items:
type: string
- type: array
items:
type: integer
- type: array
items:
type: number
- type: array
items:
type: boolean
推荐阅读
- python - 如何键入提示在函数的本地范围中定义的返回值?
- java - Spring Cloud @SqsListener MessageConversionException:无法从 [java.lang.String] 转换为 GenericMessage
- python - 从不同的文件调用具有相同名称的函数
- floating-point - 通过 HTTP 发送原始浮点值会发生什么情况?
- android - 列表视图中的单选组按钮验证 setOnCheckedChangeListener
- linq - LINQ:如何按相关表中的数据过滤集合
- javascript - 在保持 FancyBox 图像标题的同时关闭 Slider Revolution 中的 FancyBox 工具提示
- java - “递归”抓取 S3 子文件夹中的所有文件
- c++ - 调整大小后保持对向量元素的引用有效
- python - django、python、postgres 和 web 部署