首页 文章

如何在Swagger 2.0编辑器中创建不同的元素类型

提问于
浏览
2

我试图在swagger编辑器2.0中将JSON下面映射到Swagger YAML,我不知道如何将混合数组类型设置到我的模式中

{
  "obj1": [
     "string data",
     1
    ]
}

现在,我的招摇定义有,

schema:
  object1:
    type: array
    items:
      type: string

1 回答

  • 5

    答案取决于您使用的OpenAPI规范版本 .

    OpenAPI 2.0

    OpenAPI 2.0(Swagger 2.0)并不真正支持混合型数组和参数 . 你可以做的最多是使用typeless schema {}items ,这意味着项目可以是任何东西(除了 null ) - 数字,对象,字符串等 . 你不能指定 items 的确切类型,但你可以添加 example 包含不同项类型的数组 .

    # swagger: '2.0'
    
    obj1:
      type: array
      items: {}  # <--- means "any type" (except null)
      example:
        - string data
        - 1
    

    Note: 无类型模式 {} 只能在主体参数和响应模式中使用 . 路径, Headers 和表单参数需要原始 type 用于数组项 .

    OpenAPI 3.0

    下一版本OpenAPI 3.0支持混合类型,使用 anyOfoneOf 和可选的 nullable: true 也允许空值 .

    # openapi: 3.0.1
    
    obj1:
      type: array
      items:
        oneOf:
          - type: string
          - type: integer
        nullable: true  # If nulls are allowed
    

相关问题