Swagger:将枚举定义重用为查询参数

Swagger:将枚举定义重用为查询参数,swagger,swagger-2.0,Swagger,Swagger 2.0,我想使用定义中定义的枚举作为查询字符串中参数定义的一部分 我正在Swagger 2.0规范文件的定义部分定义Swagger枚举 OperationType: type: string enum: - registration - renewal 我可以在其他定义中创建对它的引用: Operation: type: object properties: name: type: string type: $ref: '#/defini

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

我正在Swagger 2.0规范文件的
定义部分定义Swagger枚举

OperationType:
  type: string
  enum:
  - registration
  - renewal
我可以在其他定义中创建对它的引用:

Operation:
  type: object
  properties:
    name:
      type: string
    type:
      $ref: '#/definitions/OperationType'
当参数为
in:body
时,我可以使用
schema
标记对其进行引用,但当参数为
in:query

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

我尝试删除模式:
并在枚举:
中创建一个引用,但无法使其工作。

对于Swagger 2.0,我们限制了对除主体参数以外的任何对象使用模型定义的能力。
定义
部分用于定义模式,模式也可用于定义非对象。但是,这些定义只能在使用
schema
关键字的情况下访问。如前所述,
schema
对于非主体参数不可访问,因此不能由查询或路径参数使用,从而限制了重用这些定义的能力


有人要求在规范的未来版本中处理它。

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

openapi:3.0.0
...
路径:
/一些东西:
获取:
参数:
-in:查询
名称:行动
模式:
$ref:“#/components/schemas/OperationType”
...
组件:
模式:
操作类型:
类型:字符串
枚举:
-登记
-更新

没有,但看起来在3.0中这是可能的。@Ron很期待。看起来真的很有用。我也有同样的问题。这有解决办法吗?我希望能够跨参数重用枚举定义。行为将在规范的下一版本中更改。