【问题标题】:Array of objects as an input parameter in swagger对象数组作为招摇中的输入参数
【发布时间】:2016-09-21 23:19:11
【问题描述】:

我正在尝试用 swagger 描述以下 post 参数:

{
    "sources": [
        {
            "id": 101,
            "parentId": 201
        },{
            "id": 102,
            "parentId": 201
        },{
            "id": 102,
            "parentId": 202
        }
    ],
    "destinationId": 301,
    "param1": "value 1",
    "param2": "value 2",
}

问题是sources 是一个对象数组,swagger 似乎不支持。这是我尝试过的:

paths:
    /bulk-action:
        post:
            parameters:
                - name: sources
                  in: formData
                  type: array
                  enum:
                      $ref: '#/definitions/BulkSource'
                - name: destinationId
                  in: formData
                  type: integer
                - name: param1
                  in: formData
                  type: string
                - name: param2
                  in: formData
                  type: string
definitions:
    BulkSource:
        type: object
        properties:
            id:
                type: integer
            parentId:
                type: integer

知道如何解决这个限制吗?

【问题讨论】:

    标签: swagger swagger-2.0


    【解决方案1】:

    如果我理解正确,您要发布的请求正文是 json 对象,而不是 form。在这种情况下,您的 swagger 文档需要进行如下修改:

    1. 当请求体为json时,使用in: body的参数代替in: formData的多个参数。
    2. 如果inbody,则需要schema 对象。
    3. schema 下定义了json 属性。如果属性typearray,则需要items 对象。

    以下是一个例子:

    paths:
      /bulk-action:
        post:
          consumes:
            - application/json
          parameters:
            - name: body
              in: body
              schema:
                properties:
                  sources:
                    type: array
                    items:
                      $ref: '#/definitions/BulkSource'
                  destinationdId:
                    type: integer
          responses:
            200:
              description: OK
    definitions:
      BulkSource:
        type: object
        properties:
          id:
            type: integer
          parentId:
            type: integer
    

    【讨论】:

    • 您能否告诉我您在哪里进行这些更改。或者我想问的是,上面的代码写在哪个文件里。我无法在我的招摇 API 中找到上述代码。
    • 如果我的请求正文'数组在 OP 正文中没有类似于“来源”的标题或名称怎么办????我有类似的问题,只有我的请求正文没有数组的名称。它更类似于 [ { key: value, key: value }, { key: value, key: value } ]
    • @Rishikesh 你知道怎么做吗?
    • @esh 是的,我认为它适用于 OpenApi 3.0.1,您只需忽略标题或名称并继续输入类型字段。对于2.0,我仍然没有任何解决方案......
    • @Wilson 你能帮我解决这个问题吗?我正在尝试在swaggerPHP中收集表单数组,不知道如何定义它以便swagger可以很好地呈现它,
    猜你喜欢
    • 2022-07-29
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2022-01-28
    • 2022-06-21
    • 1970-01-01
    相关资源
    最近更新 更多