Swagger 2.0:如何指定类型'对象'的输入参数。

时间:2015-04-14 05:07:50

标签: parameters swagger

使用Swagger 2.0我试图指定一个object类型的输入参数:

代码段:

paths:
  '/thingies/{thingy_id}.json':
    put:
      summary: Update an existing thingy
      description: Updates an existing thingy
      parameters:
        - name: thingy_id
          description: ID of the thingy to update
          in: path
          required: true
          type: integer
        - name: translation
          description: Name and Locale for new translation
          in: formData
          type: object
          properties:
            name:
              type: string
            locale:
              type: string

然而,验证者抱怨type: object部分。

我应该如何正确指定输入参数?

2 个答案:

答案 0 :(得分:12)

好的,感谢来自@ron的输入我已经找到了解决方案。是的,我需要使用body代替formData,但即使这样,它也没有验证,抱怨type: object。但是如果我首先定义对象然后$ref那么它就可以了。以下代码确实验证了。

swagger: '2.0'
info:
  version: '1'
  title: Thingy Service
  description: Everyone loves their thingy
schemes:
  - http
consumes:
  - application/json
produces:
  - application/json

definitions:
  localisation:
    type: object
    required:
      - name
      - locale
    properties:
      name:
        type: string
      locale:
        type: string

paths:
  '/thingies/{thingy_id}.json':
    put:
      summary: Update an existing thingy
      description: Updates an existing thingy
      parameters:
        - name: thingy_id
          description: ID of the thingy to update
          in: path
          required: true
          type: integer
        - name: translation
          description: Name and Locale for new translation
          in: body
          schema:
            $ref: '#/definitions/localisation'
      responses:
        204:
          description: No data
        404:
          description: Thingy not found

答案 1 :(得分:9)

Swagger仅允许对象输入作为主体参数。

其原因与内容序列化的方式有关,取决于Content-Type标题(Swagger中的produces)。该标题与整个有效载荷有关。

传递表单参数时,您使用以下两种mime类型之一:multipart/form-dataapplication/x-www-form-urlencoded。虽然前者允许您为每个部件指定mime类型,但Swagger目前不支持这样的定义。它上面有一个开放的票据,可以在规范的未来版本中使用它。

目前,在指定表单参数时,您只能指定基元或基元数组。