我正在为params
字段编写一个OpenAPI定义,该字段是一个对象,包含一个名为name
的字段,默认情况下该字段为字符串类型,但可以为任何类型,例如整数,数字,布尔值,字符串或字符串,布尔值,数字,整数的数组。
参数:{ [名称:字符串]:int |字符串编号布尔| 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
但这会产生以下语法错误:
不应包含其他属性名称。
答案 0 :(得分:0)
params 是一个对象,包括名为 name 的字段,默认情况下该字段为字符串类型,并且可以是以下所述的任何类型:整数,数字,布尔字符串或字符串,布尔,数字,整数数组。 可以是任何东西。
“ Can be anything”是通过完全不指定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