AWS API Gateway:忽略文档Swagger导出模型类型为空

时间:2018-12-03 10:59:48

标签: amazon-web-services swagger aws-api-gateway jsonschema

将AWS的API Gateway文档导出到Swagger时遇到问题。 我有一个JSON模式模型的文档部分,其中包含null类型,例如:

{
  "title": "Incident",
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
        "type": "string"
    },
    "createdAt": {
        "type": "string"
    },
    "updatedAt": {
        "type": ["string", "null"]
    }
  }
}

它可以让我为updatedAt字段发送空值,因此可以很好地进行验证。但是,在这种情况下,当我将文档导出到Swagger时,只有我的swagger文件:

{
  "title": "Incident",
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
        "type": "string"
    },
    "createdAt": {
        "type": "string"
    }
  }
}

我的updatedAt字段将被忽略,如果我设置了同样的问题

"type": "null"

这真的很成问题,因为我需要能够发送空值,在这种情况下,我的招摇文档缺少模型中的某些字段。

有什么方法可以在JSON模式中定义一个不会被AWS API Gateway忽略但可以允许我发送空值的类型吗?

感谢您的帮助。

[编辑]

列出“ nullable”:true 解决方案在这种情况下不适用。 API网关似乎使用OAI V2,并且不支持 nullable 。 但是,当我们将模型导出到Swagger(在这种情况下使用OAI V3)时,我们会松散null类型。最后,我需要找到一种适用于OAI V2和V3的null类型的解决方案。

1 个答案:

答案 0 :(得分:0)

虽然JSON模式支持null类型,但OpenAPI规范(以前是Swagger)不支持。

  

OAS中的原始数据类型基于以下支持的类型   JSON Schema Specification Wright Draft00。请注意,整数作为   还支持type并将其定义为不带   小数或指数部分。不支持将null作为类型(请参见   可为其他解决方案设置为null)。模型是使用   架构对象,它是JSON架构的扩展子集   规范赖特草案00。

https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#data-types

相反,如果您希望根据https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#fixed-fields-20的使用,可以使用"nullable": true的附加属性

OpenAPI定义的“架构对象”是JSON架构的子超集。