jsonschema - OpenAPI 规范使用 allOf 覆盖继承的属性
问题描述
我正在尝试通过Open API Enforcer运行现有的 OpenAPI 模式,并且在使用 allOf 时遇到各种验证错误。下面描述了一种这样的用法:
考虑架构中的以下属性:
queryVersion:
allOf:
- $ref: 'VersionDefinition.yaml'
- description: >-
This is my overriding version
VersionDefinition.yaml 定义如下:
description: >-
Some default version description.
type: string
default: '5.2'
上面的定义有两个问题:
OpenAPI Enforcer 期望在 allOf 或类似关键字中定义的所有模式都以类型定义开头。所以,它吐出的错误是:
在:queryVersion > allOf > 1 缺少必需的属性:类型
我通过如下修改 allOf 定义来解决这个问题:
queryVersion:
allOf:
- $ref: 'VersionDefinition.yaml'
- type : object
properties:
- description: >-
This is my overriding version
这消除了错误,但我应该在生成的模式中看到什么?原始作者表示他正在使用 allOf 来覆盖属性描述。但是,生成的模式包括以下结果:
"queryVersion": {
"allOf": [
{
"description": "Some default version description",
"type": "string",
"default": "5.2"
},
{
"type": "object",
"properties": [
{
"description": "This is my overriding version"
}
]
}
]
}
我期望看到的是:
"queryVersion": {
"description": "This is my overriding version",
"type": "string",
"default": "5.2"
}
我会继续挖掘,但有什么想法吗?
解决方案
推荐阅读
- azure-devops - 在 Azure DevOps 的 Dropbox 中隐藏 Azure Boards
- python - 如何使用 rgba 值列表设置散点图中点的颜色?
- java - 通过 Java 反射 API 查找 Lombok getter/setter
- c++ - 如何制作一个重置while循环的函数?
- javascript - 带有 HTML *和*输入字段数据的 Javascript
- r - R studio 只是停止绘图 - 反复,如何修复
- python - Python cx_oracle 错误:需要字符串或字节对象
- javascript - JSON Schema:是否有一个字段可以为字段指定元数据?
- flutter - Flutter:如何拉伸 Wrap Widget 中的最后一个元素?
- typescript - 如何在没有 cognito 的情况下使用 IAM_AUTH 调用 API Gateway 端点