【问题标题】:How to declare multiple types of a property in API Gateway model with JSON Schema and Swagger?如何使用 JSON Schema 和 Swagger 在 API Gateway 模型中声明多种类型的属性?
【发布时间】:2017-10-11 14:16:33
【问题描述】:

根据 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 Gateway,也不能正确导出为 Swagger 规范 YAML。

有没有什么方法可以用 API Gateway 和 Swagger 解决这个问题?

【问题讨论】:

  • "type": ["null", "string"] 在 OpenAPI/Swagger 2.0 中无效,因为它不支持多种类型和 null 作为类型。 nullable 将在下一个版本 OpenAI 3.0 中得到支持。 (之前有人问过这个问题,我会尝试找到重复的问题......)虽然不确定 API Gateway 部分。
  • 谢谢,这是一些有价值的意见!

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


【解决方案1】:

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

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

【讨论】:

  • 如果唯一的导出/导入方法 (swagger) 不支持 API 网关的所有功能,我该如何对我的 API 进行版本控制?是否有其他方法可以导出/导入 API Gateway 模型?
猜你喜欢
  • 2014-07-29
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2018-08-04
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多