当前位置: 首页 > 知识库问答 >
问题:

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

盖诚
2023-03-14

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

我在我的Swagger 2.0规范文件的< code>definitions部分定义了Swagger枚举。

OperationType:
  type: string
  enum:
  - registration
  - renewal

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

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

当参数在:body中为时,我可以使用schema标记对其进行引用,但在:query中为时则不能使用

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

我尝试删除架构:并在枚举:中进行引用,但无法使其正常工作。


共有2个答案

姜弘化
2023-03-14
匿名用户

这在OpenAPI 3.0中是可能的。现在,所有参数都使用< code>schema,通过扩展,可以< code>$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

狄玮
2023-03-14

对于 Swagger 2.0,我们限制了对除正文参数以外的任何内容使用模型定义的能力。定义部分用于定义架构,也可用于定义对象。但是,只有在使用 schema 关键字的情况下才能访问这些定义。如最初所述,非正文参数无法访问架构,因此查询或路径参数不能使用架构,从而限制了重用这些定义的能力。

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

 类似资料:
  • 无法获取如何将字符串类型的引用与数组参数中的枚举值一起使用。我可以在items键中进行引用,并且它正在工作,但Swagger产生错误:不是有效的参数定义 Web UI生成界面,但它有文本区,而不是我期望的多选框。 正确的做法是什么? 我的代码:

  • 为什么要在C++11中编译: 但这不是:

  • Swagger没有为这个查询参数提供有效的参数定义。如果我删除路径和参数定义中对用户名的所有引用,则不会出现任何问题。 根据Swagger规范,我相信我使用了正确的查询参数,但不知何故它不是。

  • 我希望能够使用此枚举定义: ...然而,在参数定义内部,我不断得到错误: 错误: Swager错误:不是有效的参数定义

  • 我有一个实体,其类型由enum表示。数据库是Postgres,在那里表示为枚举类型。我使用JPA/Hibernate及其存储库。请注意,我是JPA、Hibernate和Kotlin的新手。 我试图创建自定义,我需要选择类型(枚举)在可能类型列表中的公司。我,但是,遇到各种错误类型铸造在SQL和/或语法的。 Kotlin中数据类