为什么 OAS3 可为空的属性无法被 Newtonsoft 模式验证器识别?



使用Swagger OAS3记录了我的API。我有使用yaml定义的属性为:

LoanAmount:
 type: number
 nullable: true 

由此产生的json我可以从摇摇欲坠的外观出口如下:

  "LoanAmount": {
    "type": "number",
    "nullable": true
  },

当我使用jsonschemavalidator用架构进行验证时,AS

   {
      "title": "A JSON Schema for OpenAPI 3.0.",
      "id": "http://openapis.org/v3/schema.json#",   "$schema": 
      "http://json-schema.org/",   "type": "object",
      "properties": {
      "LoanAmount": {
      "type": "number",
      "nullable": true}
       }
    }

和输入为:

{
  "LoanAmount" : null
}

验证失败

"无效类型。预期数字,但得无效"

我可以使用:

来完成这项工作
"LoanAmount": {
"type": ["number","null"]
}

但是,我无法弄清楚如何使用OAS3 YAML来定义它。我的目标是不必在Swagger Hub之外保持单独的模式,以满足我对API中许多字段的无效要求。

宣传文档页面描述了OAS3"使用JSON Schema规范的扩展子集Wright草稿00(又名草稿5)来描述数据格式..."

JSON.NET模式文档说:"支持JSON Schema Draft 6的100%,并与较旧版本具有后退兼容性"

我的假设是,OAS3无效属性是扩展子集功能之一,而不是任何JSON模式草稿的一部分,但是我正在寻找在继续之前的确认。

oas3使用JSON模式关键字的子集超集。

请参阅https://github.com/oai/openapi-specification/blob/master/versions/3.0.2.md#data-types

OA中的原始数据类型基于由 JSON模式规格Wright Draft00。请注意,整数是一个 类型也得到支持,并定义为没有一个的JSON编号 分数或指数部分。NULL不支持类型(请参阅 可用于替代解决方案)。使用模型定义 模式对象,这是JSON模式的扩展子集 规格Wright草稿00。

确认。正在进行工作以允许在OAS的未来版本中充分使用JSON模式!

相关内容

  • 没有找到相关文章

最新更新