代码之家  ›  专栏  ›  技术社区  ›  Bradley

使用swagger2.0,如何显示一个模型,它是一个接受多种类型的数组?

  •  0
  • Bradley  · 技术社区  · 6 年前

    我在用app.swaggerhub.com网站生成swagger 2.0规范。

    我的代码如下所示:

    036  definitions:
    
    ---    // code that defines 'fieldRequirement' and 'slideRequirement'
    
    106    requirement:
    107      type: array
    108      items:
    109        oneOf:
    110          - $ref: '#/definitions/fieldRequirement'
    111          - $ref: '#/definitions/slideRequirement'
    

    这将在同一行(106)上返回3个错误:

    106 should NOT have additional properties additionalProperty: oneOf
    106 should be array
    106 should match some schema in anyOf
    

    我试图实现的是一个模型,它允许fieldRequirement或slideRequirement作为requirement中的数组元素。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Nelson G.    6 年前

    oneOf 不受swagger 2.0支持,仅受 swagger 3.0 .

    但是,可以将多态性与字段一起使用 discriminator 如果无法升级到swagger 3.0,则需要一个如下文件:

    requirement:
      type: array
      items:
        - $ref: '#/definitions/Requirement'
    

    ...

    definitions:
      Requirement:
        type: object
        discriminator: requirementType
        properties:
          requirementType:
            type: string
        required:
        - requirementType
      FieldRequirement:
        allOf:
        - $ref: '#/definitions/Requirement'
        - type: object
          properties:
            ...
      SlideRequirement:
        allOf:
        - $ref: '#/definitions/Requirement'
        - type: object
          properties:
            ...