Массив объектов отображается как пустой массив в пользовательском интерфейсе Swagger

У меня есть следующие определения модели в спецификации OpenAPI/Swagger:

"definitions": {
    "models.Equipment": {
        "title": "Equipment",
        "type": "object",
        "properties": {
            "Features": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/models.Feature"
                }
            },
            "Id": {
                "type": "integer",
                "format": "int64"
            },
            "IdType": {
                "type": "string"
            },
            "Name": {
                "type": "string"
            },
            "Price": {
                "type": "integer",
                "format": "int32"
            }
        }
    },
    "models.Feature": {
        "title": "Feature",
        "type": "object",
        "properties": {
            "Equipments": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/models.Equipment"
                }
            },
            "Id": {
                "type": "integer",
                "format": "int64"
            },
            "IdFeature": {
                "$ref": "#/definitions/models.Feature"
            },
            "Name": {
                "type": "string"
            }
        }
    }
}

В модели Feature свойство Equipments определяется как массив моделей Equipment, но пользовательский интерфейс Swagger 3.x отображает его как пустой массив []. Везде используется модель Feature, например, как пример для метода POST в Feature у меня такое отображение.

ошибка Swagger-UI

Определение в чем-то неверно?

Полная спецификация находится здесь:
https://dl.dropboxusercontent.com/s/anjfhgxhr0pfmnu/swagger-bug.json


person Julien Kosinski    schedule 02.07.2017    source источник


Ответы (1)


Похоже, это ошибка в пользовательском интерфейсе Swagger, которая, скорее всего, вызвана циклическими ссылками в ваших моделях — models.Equipment ссылки models.Feature и models.Feature ссылки models.Equipment. Вы можете открыть задачу в репозитории пользовательского интерфейса Swagger на GitHub.


Ваша спецификация также содержит ошибки в определениях ответов:

        "responses": {
            "200": {
                "schema": {
                    "$ref": "#/definitions/models.Equipment"
                }
            },
            "403": {}
        }

Каждый ответ должен иметь description, поэтому правильная версия будет:

        "responses": {
            "200": {
                "description": "OK",
                "schema": {
                    "$ref": "#/definitions/models.Equipment"
                }
            },
            "403": {
                "description": "Oops"
            }
        }
person Helen    schedule 03.07.2017
comment
Большое спасибо за то, что все перефразировали, я очень ленился с этим вопросом, извините за это. Еще раз спасибо, что заметили ошибку! :) Вот проблема, о которой я сообщил: github.com/swagger-api/swagger -ui/проблемы/3325 - person Julien Kosinski; 04.07.2017