OpenAPI 是否允许 $ref 到_specific_枚举值?
Does OpenAPI allow a $ref to a _specific_ enum value?
假设在我的 OpenAPI v3 描述中,我有以下 /componenets/schemas
条目(使用 YAML)格式:
WidgetTypes:
type: string
enum:
- WIDGET_A
- WIDGET_B
- WIDGET_C
WidgetTypes
模式因此是一个命名的(即值 $ref
)枚举 'class'。在 API 规范的其他各个地方,我们现在可以引用这些枚举值,例如也许有一个 API 路径,其中一个路径元素必须来自 WidgetTypes
集合。
现在,我还有一些额外的模式(即对象数据模型),并且可能存在 specific WidgetType
值是 constant 该对象类型。一个例子:
MySpecificWidgetA:
type: object
properties:
someField1:
type: string
someField2:
type: number
widgetType:
type: string
enum:
- WIDGET_A
这感觉像是完成此任务的天真的方法,因为现在 MySpecificWidgetA
的 widgetType
字段是一个字符串,来自可能的 WidgetType
的集合,但没有实际提到 WidgetType
强制执行此 。
在精神上,我想断言 MySpecificWidgetA.widgetType
是 特定值 来自 WidgetType
枚举模式(在本例中为 WIDGET_A
) .
仅使用 $ref: '#/components/schemas/WidgetType'
通过验证,但没有完成我想要的:它声明 widgetType
只是来自该集合的值......我希望它是 restricted 该集合的值(即常量)。
我已经尝试用 $ref
其他几种方法来获得 widgetType
的值,包括(但没有成功):
$ref: '#/components/schemas/WidgetType/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/0'
(最后一个不是很有用,只是测试了 $ref
使用的确切 JSON 指针格式。)
None 以上这些尝试通过了 OpenAPI v3 验证...有谁知道是否可以(通过 $ref
或其他机制)引用 来自定义的枚举架构元素的特定值?
JSON 架构不允许这样做。 $ref
只允许解析为其他模式对象,不能解析为单个数据点。
假设在我的 OpenAPI v3 描述中,我有以下 /componenets/schemas
条目(使用 YAML)格式:
WidgetTypes:
type: string
enum:
- WIDGET_A
- WIDGET_B
- WIDGET_C
WidgetTypes
模式因此是一个命名的(即值 $ref
)枚举 'class'。在 API 规范的其他各个地方,我们现在可以引用这些枚举值,例如也许有一个 API 路径,其中一个路径元素必须来自 WidgetTypes
集合。
现在,我还有一些额外的模式(即对象数据模型),并且可能存在 specific WidgetType
值是 constant 该对象类型。一个例子:
MySpecificWidgetA:
type: object
properties:
someField1:
type: string
someField2:
type: number
widgetType:
type: string
enum:
- WIDGET_A
这感觉像是完成此任务的天真的方法,因为现在 MySpecificWidgetA
的 widgetType
字段是一个字符串,来自可能的 WidgetType
的集合,但没有实际提到 WidgetType
强制执行此 。
在精神上,我想断言 MySpecificWidgetA.widgetType
是 特定值 来自 WidgetType
枚举模式(在本例中为 WIDGET_A
) .
仅使用 $ref: '#/components/schemas/WidgetType'
通过验证,但没有完成我想要的:它声明 widgetType
只是来自该集合的值......我希望它是 restricted 该集合的值(即常量)。
我已经尝试用 $ref
其他几种方法来获得 widgetType
的值,包括(但没有成功):
$ref: '#/components/schemas/WidgetType/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/0'
(最后一个不是很有用,只是测试了 $ref
使用的确切 JSON 指针格式。)
None 以上这些尝试通过了 OpenAPI v3 验证...有谁知道是否可以(通过 $ref
或其他机制)引用 来自定义的枚举架构元素的特定值?
JSON 架构不允许这样做。 $ref
只允许解析为其他模式对象,不能解析为单个数据点。