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

在OpenAPI中重用枚举的子集(Swagger)

东门城
2023-03-14
paths:
  /products:
    get:
      parameters:
      - in: query
        name: color
        required: true
        schema:
          $ref: '#/components/schemas/Color'
      responses:
        '200':
          description: OK
components:
  schemas:
    Color:
      type: string
      enum:
        - black
        - white
        - red
        - green
        - blue

共有1个答案

澹台鸿熙
2023-03-14

没有很好的方法重用枚举的一部分。最好的方法是定义单独的枚举。


一个可能的解决办法是使用中的一个将部分枚举“组合”到完整枚举中。但是,枚举模式之一可能不能在Swagger UI和代码生成器中用作枚举。

components:
  schemas:
    BlackOrWhite:
      type: string
      enum:
        - black
        - white
    Color:
      oneOf:
        - $ref: '#/components/schemas/BlackOrWhite'
        - type: string
          enum:
            - red
            - green
            - blue


YAML&锚和合并键<<的技巧将不起作用,因为YAML只支持映射(对象)中的合并键,而不支持序列(数组)中的合并键。

# This will NOT work in YAML

components:
  schemas:
    BlackOrWhite:
      type: string
      enum: &BLACK_WHITE
        - black
        - white
    Color:
      type: string
      enum:
        << : *BLACK_WHITE
        - red
        - green
        - blue
 类似资料:
  • 我有多个请求体需要使用相同的枚举,但我很难跨多个模式引用单个定义。 在我的< code>openapi.yaml文件中,我包含了: 在我为 POST/PUT 请求设置的正文定义中,我包括: 但在生成的代码中,正在创建的是: 而一个单独的类是使用以下命令创建的: 如何跨文件创建对枚举定义的引用?

  • 在Java中,有没有办法从现有枚举中定义一个新枚举?我想要以下功能。 1、2、3和所有这些都必须相同,即, 一个真实的例子是天、星期、周末、讲座、派对等。

  • 我正在学习带有 Api-Platform 的 OpenApi/Swagger API。我创建了一个新的endpoint,它接受枚举的值作为参数: 然而,这是一个相当常见的参数,值可以频繁更新(随着服务器的增加),我想使用某种模板。 所以我试着: 跟 或者 以及其他各种形式,都无济于事。 我试图理解组件的概念,但无法找到在Symfony/Api平台中使用它们的方法。 如何在不同的endpoint重用

  • 例如: Swagger这样显示枚举: 我想要的是: API返回“显示名称”,然而,Swagger显示“枚举名称”,这经常导致混淆。有可能改变狂妄的价值观吗?

  • 我正在使用从以下依赖项导入的Swagger/OpenAPIV3注释创建应用程序的API描述: 其中一个批注是批注,它接受名为的属性,该属性允许字符串数组: 现在,我想使用在枚举类上构造的自定义方法,该方法返回允许的字符串数组,因此不需要在每次向枚举添加类型时添加该方法。以便我们可以这样使用它: 现在这是无法编译的,因为在执行注释时不知道该方法。是否有这样的解决方案允许在SwaggerV3注释属性值

  • 问题内容: 这个问题已经在这里有了答案 : 10年前关闭。 复制: 在Python中实现“枚举”的最佳方法是什么? 在python中进行枚举的公认方法是什么? 例如,目前我正在编写游戏,希望能够将“上”,“下”,“左”和“右”移动。我使用字符串是因为我还没有弄清楚枚举在python中是如何工作的,所以我的逻辑充满了这样的东西: 我想用类似的东西代替 问题答案: