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

使用未命名对象数组创建昂首阔步/开放API响应

凌景辉
2023-03-14

我从http请求中得到以下形式的响应:它是一个由未命名数组和对象组成的数组。我无法为这种情况找到合适的Swagger(开放API)规范。

[
  [
    {
      "prop1": "hello",
      "prop2": "hello again"
    },
    {
      "prop1": "bye",
      "prop2": "bye again"
    }
  ],
  {
    "key": 123
  }
]

共有2个答案

酆恩
2023-03-14

我找到了一个方法,谢谢:

"responses": {
      "200": {
        "description": "success",
        "schema": {
          "type": "array",
          "items": [{
           "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "prop1": {
                  "type": "string",
                },
                "prop2": {
                  "type": "string",
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "key": {
                "type": "number"
              }
            }
          }]
        }
      }
    }
  }
华锦程
2023-03-14

答案取决于您使用的OpenAPI版本。

OpenAPI 3.0支持oneOf,因此可以为数组项定义多个模式:

openapi: 3.0.0
...

paths:
  /something:
    get:
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:   # <---------
                    - type: array
                      items:
                        type: object
                        properties:
                          prop1:
                            type: string
                          prop2:
                            type: string
                    - type: object
                      properties:
                        key:
                          type: integer
                      required:
                        - key

OpenAPI 2.0不支持其中一种或混合类型。您最多只能使用无类型模式,这意味着数组项可以是任何对象、数组或原语,但不能指定确切的类型。

swagger: '2.0'
...
paths:
  /:
    get:
      produces:
        - application/json
      responses:
        '200':
          description: success
          schema:
            type: array
            items: {}   # <---------

            # Example to display in Swagger UI:
            example:
              - - prop1: hello
                  prop2: hello again
                - prop1: bye
                  prop2: bye again
              - key: 123

 类似资料:
  • 我正在努力找到配置基本路径的方法。 我想配置基本路径服务器端 我正在使用OpenAPI生成器从一个招摇过市的endpoint(asp核心web api)生成SUB 是否有方法配置不同的基本路径。

  • 问题内容: 我想知道如何用昂扬的方式记录枚举。 根据JavaDoc 数据类型。请参阅文档以获取受支持的数据类型。如果数据类型是自定义对象,请设置其名称,或不设置任何名称。如果是枚举,请为枚举常量使用’string’和allowableValues。 但是我没有找到一些好的Java示例如何真正使用它,规范在这里。 第一服务 第二服务 输入项 天 输出量 pom.xml 您可以在此处查看结果。 我看到

  • 我试图显示一个自定义容器,作为一个成功的响应。我无法描述这方面所需的模型 THIS Paged响应信息实际上是一个自定义集合 如果其中包含一个Report对象集合,如何指定容器?有人能帮帮我吗?我在Spring引导中使用springfox swagger-2.9.2

  • 数据类型。有关支持的数据类型,请参见文档。如果数据类型是自定义对象,请设置它的名称,或者不设置任何名称。对于枚举,使用'string'和allowableValues作为枚举常量。 但是我没有找到一些好的Java示例如何真正使用它,规范在这里。 你可以在这里看到结果。 我认为是个问题... 你知道吗?

  • 我们正在为我们的Laravel REST API实现开发Swagger文档。几个POSTendpoint将使用CSV作为参数内容类型。 Swagger中是否有一种方法可以让“立即尝试”功能与CSV POST文件上传一起使用? 下面是我们的留档http://api.curvecompass.com/docs/#/ 我们的Laravel POST函数可以正确地与CSVendpoint一起工作,而不是与

  • 我正在使用中的使用OpenApi示意图生成Swagger文档。 要使用模式,我可以做 它工作得很好,表现为 .但是它创建了一个带有方括号的数组块,其中包含多个对象。 我如何使用相同的工作,但失去数组。类似于 以便移除方括号并只显示类似的对象。