16

我想definitions在查询字符串中使用定义的枚举作为我的参数定义的一部分。

我在definitions我的 Swagger 2.0 规范文件的一部分中定义了 Swagger Enum。

OperationType:
  type: string
  enum:
  - registration
  - renewal

我可以在其他定义中创建对它的引用:

Operation:
  type: object
  properties:
    name:
      type: string
    type:
      $ref: '#/definitions/OperationType'

我可以在参数为 时使用schema标签来引用它in: body,但在参数为 时则不行in: query

    - name: operation
      in: body
      description: description
      schema:
        $ref: '#/definitions/OperationType'

我尝试删除schema:并进行参考enum:,但无法使其正常工作。

4

2 回答 2

14

对于 Swagger 2.0,我们限制了将模型定义用于除body参数之外的任何内容的能力。该definitions部分用于定义模式,也可用于定义非对象。但是,这些定义只能在使用schema关键字的地方访问。如最初所述,schema非主体参数不可访问,因此不能由查询或路径参数使用,从而限制了重用这些定义的能力。

有一个开放的功能请求要求在未来版本的规范中处理它。

于 2015-08-27T18:15:15.650 回答
9

这在 OpenAPI 3.0 中是可能的。现在所有参数都使用 a schema,并且,通过扩展,可以$ref使用模式。

openapi: 3.0.0
...
paths:
  /something:
    get:
      parameters:
        - in: query
          name: action
          schema:
            $ref: '#/components/schemas/OperationType'
      ...

components:
  schemas:
    OperationType:
      type: string
      enum:
        - registration
        - renewal
于 2018-01-30T17:38:32.893 回答