对 swagger 文档的枚举支持

Enum support for swagger doc

我对 Swagger 对 OpenAPI3.0 的枚举支持感到有点困惑。我的意思是 swagger doc 有了新的改进,支持可重复使用的枚举 记录在这里:

https://swagger.io/docs/specification/data-models/enums/

其中使用 $ref 说明对可重用枚举的支持。然而,当我 post 我的 swagger.json 大摇大摆时 editor/validator 看起来像下面的

in: query
          name: prop-name
          description: something
          type: array
          items:
            $ref: '#/definitions/mytype'

进一步定义如下:

mytype:
    enum:
      - Item1
    type: string

Swagger 编辑器抛出错误并显示 should NOT have additional properties additionalProperty: $ref

现在,这在加载 swagger 页面和实现功能时不是问题,但在使用 swagger-gen 和使用它生成客户端时却是问题。 swagger-gen CLI 也会抛出同样的错误,导致我们现在能够正确地为这个页面生成一个客户端。

这个swagger.json有什么问题吗?我可以提供任何额外信息来阐明这个问题吗?

在 OpenAPI 2.0 中,数组参数模式不能使用 $ref。您必须定义 enum inline:

- in: query
  name: prop-name
  description: something
  type: array
  items:
    type: string
    enum:
      - Item1