对象数组作为swagger中的输入参数

时间:2016-09-21 23:19:11

标签: swagger swagger-2.0

我试图在swagger中描述以下post参数:

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

问题在于sources是一个对象数组,这些招摇似乎并不支持。这是我试过的:

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

有关如何解决此限制的任何想法?

1 个答案:

答案 0 :(得分:12)

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

  1. 当请求正文是json时,使用带in: body的参数而不是in: formData的多个参数。
  2. 如果inbody,则需要schema个对象。
  3. schema下定义了json属性。如果属性typearray,则需要items个对象。
  4. 以下是一个例子:

    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