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

Enums 在OpenAPI中重用枚举的子集(Swagger),enums,swagger,openapi,Enums,Swagger,Openapi,我试图实现一个OpenAPI定义,其中我定义了一个共享的、完整的允许值列表作为枚举,然后使用不同位置的值的子组来显示在每种情况下允许哪些值 使用中的示例,如果我有这样的定义: 路径: /产品: 获取: 参数: -in:查询 名称:颜色 必填项:true 模式: $ref:“#/components/schemas/Color” 响应: '200': 描述:好的 组件: 模式: 颜色: 类型:字符串 枚举: -黑色的 -白色的 -红色的 -绿色的 -蓝色的 然后,是否可以定义例如以颜色作为参数的

我试图实现一个OpenAPI定义,其中我定义了一个共享的、完整的允许值列表作为枚举,然后使用不同位置的值的子组来显示在每种情况下允许哪些值

使用中的示例,如果我有这样的定义:

路径:
/产品:
获取:
参数:
-in:查询
名称:颜色
必填项:true
模式:
$ref:“#/components/schemas/Color”
响应:
'200':
描述:好的
组件:
模式:
颜色:
类型:字符串
枚举:
-黑色的
-白色的
-红色的
-绿色的
-蓝色的

然后,是否可以定义例如以颜色作为参数的两个不同路径,但其中一个只接受
黑色
白色
,而另一个接受所有颜色?

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


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

组件:
模式:
黑白:
类型:字符串
枚举:
-黑色的
-白色的
颜色:
其中一项:
-$ref:“#/components/schemas/BlackOrWhite”
-类型:字符串
枚举:
-红色的
-绿色的
-蓝色的


YAML
&主播的技巧
谢谢。这证实了我的怀疑。我试着使用裁判和锚,但结果失败了。我目前在不同的路径中有单独的枚举,它在技术上可以工作,但在生成的代码
path1.BLACK!=路径2.黑色
,这不是最佳选择。但我想我必须在路径处理程序中编写一些功能,以将给定值映射到公共共享枚举(在我自己的“手写”代码中定义)。您可能对OpenAPI规范存储库中的以下讨论感兴趣: