OpenAPI是否允许对_specific_枚举值使用$ref



假设在我的OpenAPI v3描述中,我有以下/componenets/schemas条目(使用YAML(格式:

WidgetTypes:
type: string
enum:
- WIDGET_A
- WIDGET_B
- WIDGET_C

因此,WidgetTypes模式是一个命名的(即值$ref(枚举"类"。在API规范的其他地方,我们现在可以引用这些枚举值,例如,可能存在API路径,其中一个路径元素必须来自WidgetTypes集合。

现在,我还有一些额外的模式(即对象数据模型(,可能存在特定于WidgetType值是该对象类型的常量的情况。一个例子:

MySpecificWidgetA:
type: object
properties:
someField1:
type: string
someField2:
type: number
widgetType:
type: string
enum:
- WIDGET_A

这感觉像是实现这一点的天真方法,因为现在MySpecificWidgetAwidgetType字段是一个来自可能的WidgetType的集合的字符串,,但没有实际引用WidgetType来强制执行这一点。在精神上,我想断言的是MySpecificWidgetA.widgetTypeWidgetType枚举模式(在本例中为WIDGET_A(中的特定值。只使用$ref: '#/components/schemas/WidgetType'可以通过验证,但不能实现我想要的:它声明widgetType只是来自该集合的一个值。。。我希望它是该集合中的受限值(即常数(。

我尝试过用$ref测试widgetType的其他几种方法,包括(但没有成功(:

$ref: '#/components/schemas/WidgetType/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/0' 

(最后一个不是很有用,只是测试了$ref使用的JSON指针格式。(

以上尝试均未通过OpenAPI v3验证。。。有人知道是否可以从定义的枚举模式元素中引用(通过$ref或其他机制(特定于的值吗?

JSON架构不允许这样做。$ref只允许解析为其他模式对象,而不允许解析为单个数据点。

相关内容

  • 没有找到相关文章

最新更新