首页 文章

如何使用JSON Schema和Swagger在API网关模型中声明多种类型的属性?

提问于
浏览
1

根据AWS文档,API Gateway中的模型支持JSON Schema语法,但是,它们导出为Swagger OpenAPI规范,其中Swagger规范不完全支持许多有效的JSON Schema结构 .

我希望我的API网关模型有一组可选的文本字段,例如 message ,但定义为

{
  "type": "object",
  "properties": {
    "message": {
      "type": "string"
    }
  }

}

并且启用了体验验证,当消息为空字符串或缺失时,它会拒绝此模型 . 即使 message 未包含在必填字段列表中,也会这样做

"required": [
      "message"
    ],

四处搜索,我发现要允许空/空字符串值,必须将 null 类型添加到属性类型列表中,例如:

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

但是,这仍然不适用于API网关,也不能正确导出为Swagger规范YAML .

有没有办法用API Gateway和Swagger来解决这个问题?

1 回答

  • 0

    正如Helen所提到的,Swagger不支持多种类型,也不支持null作为类型 . 这可能会阻止您使用swagger导入/导出的第一种方法 .

    但是,内部API网关模型支持确实使用JSON模式,即使导入/导出没有,也可以工作 . 我建议您尝试通过API网关控制台或API网关CLI输入您的模型 .

相关问题