使用OpenAPI(swagger)JSON模式定义对空值进行模式验证



我正在寻找一种解决方案,以解决Swagger(OpenAPI(数据类型和JSON Schema之间处理数据类型空值的不兼容问题。

我们的swagger文件包括我们所有的模式定义,我想在API测试中使用JSON.NetSchema进行模式验证步骤。

有效的招摇特性定义:

"description": {
"type": "string",
"nullable": true
}

将无法通过空值的JSON架构验证(Invalid type. Expected String but got Null(。

如果我将可为null的属性定义替换为:

"description": {
"type": ["string", "null"]
} 

null值的验证将是成功的,但这打破了swagger语法。

Structural error at components.schemas.CalendarFunctionsDto.properties.description_EN.type
should be equal to one of the allowed values
allowedValues: array, boolean, integer, number, object, string

我找不到适用于.NET的OpenAPI模式到JSON模式转换器。我正试图弄清楚是否有一个简单的解决方案可以使用JSON.NET模式来解决这个问题。我们的一些类型比上面的例子更复杂。我正在寻找一种适用于所有人的解决方案;可以为null";类型。

理想情况下,我希望为输入保留有效的swagger(OpenAPI 3.0(JSON语法,以编程方式在C#中为所有可为null的属性执行一些拼写(转换模式,或调整验证,或任何其他创造性的解决方案(,然后使用JSON.Net模式验证模式。

Openapi 3.0.0/3.0.1/3.0.2/3.0.3不支持null类型,只支持nullable。JSON架构不支持null,它支持null类型。你能把你的规范更新到Openapi v3.1.0吗?该版本支持null类型。然后您可以使用以下选项之一:

选项1(不太可能在openapi工具中工作,因为类型数组是一个新添加(

"description": {
"type": ["string", "null"]
} 

选项2(更可能使用openpi工具,因为类型不是数组(

"description": {
"oneOf" [
{"type": "string"},
{"type": "null"},
]
}

最新更新