当前位置: 首页 > 知识库问答 >
问题:

OpenAPI数组内的多种类型

柳奇希
2023-03-14

我在使用OpenAPI 3定义可重用架构组件时遇到问题,这将允许包含多种类型的数组。每个项目类型都继承自同一个父类,但具有特定的子属性。这在SwaggerHub上的model视图中似乎可以正常工作,但示例视图没有正确显示数据

太长,读不下去了有没有办法在OpenAPI 3中定义包含不同对象类型的数组?

Response:
  allOf:
    - $ref: '#/components/schemas/BaseResponse'
    - type: object
      title: A full response
      required:
      - things
      properties:
        things:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/ItemOne'
              - $ref: '#/components/schemas/ItemTwo'
              - $ref: '#/components/schemas/ItemThree'

共有1个答案

漆雕奇逸
2023-03-14

你的规格是正确的。只是在Swagger UI中还不支持对模式之一和模式之一进行示例呈现。您可以跟踪此问题以获取状态更新:

使用oneOf属性的多个响应不会出现在UI

解决方法是在oneOf/anyOf模式或父模式旁边手动添加示例

        things:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/ItemOne'
              - $ref: '#/components/schemas/ItemTwo'
              - $ref: '#/components/schemas/ItemThree'
          # Note that array example is on the same
          # level as `type: array`
          example:
            - foo: bar        # Example of ItemOne
              baz: qux
            - "Hello, world"  # Example of ItemTwo
            - [4, 8, 15, 16, 23, 42]  # Example of ItemThree
 类似资料:
  • 问题内容: 很抱歉,如果这是重复的,尽管我无法在任何地方找到确切的答案: 有没有办法在 postgreSQL中 创建一个包含多个数据类型的数组? 我有一个类型的列(类型文本数组);尽管我想从type插入三个条目,然后插入第四个条目到此数组中。 有办法吗?如果是这样,怎么办? 问题答案: 我不认为有一种方法可以声明具有多个类型的数组。但是,我认为您可以使用复合类型来完成您想做的事情,例如, 然后,您

  • 问题内容: 我可以用来存储多种不同类型的数据(整数/字符串/等)?我来自PHP背景,可以将不同类型的数据存储到数组中,但是我不知道如何在Java中进行操作。 举个例子: 如何用Java做类似的事情? 问题答案: Java是一种强类型语言。在PHP或Javascript中,变量没有严格的类型。但是,在Java中,每个对象和基元都有严格的类型。您可以将多种类型的数据存储在Array中,但只能将其作为对

  • 我希望在OpenAPI中表示以下JSON对象: 属性的数量和属性名称不是完全预先确定的,所以我希望使用additionalProperties。然而,我不太确定它将如何通过OpenAPI/Swagger 2.0来表示。我试过这个: 或JSON等价物: 但这不太管用。有没有办法保持我想要表示的JSON对象的结构,特别是字符串和整数,而不是任意对象类型?

  • 在我的Spring项目中,我使用Springdoc生成OpenApiSpecification文档。我用这些注释创建了我的Api。我想用不同的mediatype拥有相同的endpointurl来处理不同对象的POST。 生成的开放式Api规范文档为: 我有几个问题: > 终结点名称没有意义(保存\u 1) 当我使用OpenAPI生成器根据此规范生成Angular客户端时,我收到一些警告,这些警告会

  • 问题内容: 我正在使用Express创建网站和API,我想在同一路径上提供多种内容类型(JSON,XML,HTML)。在Express中,有一种更好的方法可以编写以下内容: 特别是上面的代码似乎很重复,可能有一种更标准的编写方式。 问题答案: 有response.format方法,该方法使用基于“ Accept”标头选择某些呈现方法。http://expressjs.com/4x/api.html

  • 在SpringMVC请求头中可以有多种内容类型吗?我要通过: 通过邮递员到我的API。目前,我得到了