将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类型的解决方案。
答案 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架构的子超集。