OpenAPI spe c использует allOf для переопределения унаследованного свойства - PullRequest
2 голосов
/ 12 апреля 2020

Я пытаюсь запустить существующую схему OpenAPI через Open API Enforcer , и я получаю различные ошибки проверки при использовании allOf. Одно из таких применений описано ниже:

Рассмотрим следующее свойство в схеме:

queryVersion:
    allOf:
      - $ref: 'VersionDefinition.yaml'
      - description: >-
          This is my overriding version

VersionDefinition.yaml определяется следующим образом:

description: >-
  Some default version description.
type: string
default: '5.2'

Существует два проблемы с приведенным выше определением:

  1. OpenAPI Enforcer ожидает, что все схемы, определенные в ключевом слове allOf или аналогичном, начнутся с определения типа. Итак, ошибка, которую он выдает:

    at: 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"
                      }

Я продолжу копать, но есть идеи?

...