【问题标题】:How to define an array of another schema in OpenAPI 3? [duplicate]如何在 OpenAPI 3 中定义另一个模式的数组? [复制]
【发布时间】:2018-04-14 02:16:58
【问题描述】:

我已经定义了这个架构:

User:
  type: object
  required:
    - id
    - username
  properties:
    id:
      type: integer
      format: int32
      readOnly: true
      xml:
        attribute: true
      description: The user ID
    username:
      type: string
      readOnly: true
      description: The username
    first_name:
      type: string
      description: Users First Name
    last_name:
      type: string
      description: Users Last Name
    avatar:
      $ref: '#/components/schemas/Image'
  example:
    id: 10
    username: jsmith
    first_name: Jessica
    last_name: Smith
    avatar: image goes here
  xml:
    name: user

效果很好。 GET /user/{id} 调用可以很好地显示示例数据。

我有第二个架构,它创建了上述架构的数组:

ArrayOfUsers:
  type: array
  items:
    type: object
    required:
      - id
      - username
    properties:
      id:
        type: integer
        format: int32
        xml:
          attribute: true
        description: The user ID
      username:
        type: string
        description: The username
      first_name:
        type: string
        description: Users First Name
      last_name:
        type: string
        description: Users Last Name
      avatar:
        $ref: '#/components/schemas/Image'

这也很好用。 GET /user 调用可以很好地在数组中显示正确的结构。

但我宁愿不要定义这个架构两次。

我想创建一个使用第一个模式并粘贴在数组中的模式。

我这次尝试失败了。

我是这样尝试的:

UserArray:
  type: array
  items:
    type: object
    required:
      - id
      - username
  properties:
    things:
      type: array
      items:
        oneOf:
          - $ref: '#/components/schemas/User'

这个尝试给了我一个空数组:

[
  {}
]

这不是我想要的结果。

对此有何提示?

【问题讨论】:

  • 感谢您的回答并指出另一个问题。

标签: swagger openapi


【解决方案1】:

User 对象的数组定义如下:

UserArray:
  type: array
  items:
    $ref: '#/components/schemas/User'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2020-12-04
    • 2020-04-02
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多