Swagger-1.2: как отображать n-вложенные объекты JSON в схеме модели

Я использую Swagger 1.2, и мне трудно смоделировать вложенные объекты JSON, я бы хотел, чтобы схема модели отображалась так же, как в онлайн-демонстрации Swagger Pet store POST/pet (пример значения) . Например, мой объект:

{
   "parent" : {
      "child_1" : {
          "child_2a" : "string",
          "child_2b" : {
              "child_3a" : "string",
              "child_3b" : ["string"]
          }
       }
    }
}

Как видите, у меня есть более 1 уровня JSON. В моем массиве parameter у меня есть что-то вроде этого:

....
stuff here
.....
api: [
{
            "path": "/api/foo/bar",
            "operations": [
                {
                    "method": "POST",
                    "summary": "a job",
                    "consumes": ["application/json"],
                    "authorizations": {},
                    "parameters": [
                        {
                            "name": "body",
                            "required": true,
                            "type" : "Parent",
                            "description": "some description",
                            "paramType": "body"
                        },
                        {
                            "name": "fooz",
                            "description": "some description",
                            "required": false,
                            "type": "string",
                            "paramType": "query"
                        }
                    ],
                    ...... 
                    ........
        }
],
"models" : {
    "Parent": {
            "id": "Parent",
            "required": ["parent"],
            "properties": {
              "parent": {
                "$ref": "Child1"
              }
            }
        },
        "Child1": {
            "id": "Child1",
            "required" : ["child_1"],
            "properties": {
              "child_1": {
                "$ref": "Child2"
              }
            }
        },

        "Child2" : {
            "id"  : "Child2",
            "required" : ["child_2a", "child_2b"],
            "properties" : {
                "child_2a" : {
                    "type" : "string"
                },
                "child_2b" : {
                    "$ref" : "Child3"
                }

            }
        },
        "Child3" : {
          "id"  : "Child2",
            "required" : ["child_3a", "child_3b"],
            "properties" : {
                "child_3a" : {
                    "type" : "string"
                },
                "child_3b" : {
                    "type" : "array",
                    "items": {
                       "type": "string"
                    }
                }
        }

}

Но отображение схемы модели:

{
   "parent" : "Child1"
}

Я наверное что-то не так сделал? Как заставить его отображать весь вложенный объект в схеме модели? Так же, как демонстрационный зоомагазин Swagger POST/Pet Example Value


person leona    schedule 31.03.2016    source источник


Ответы (1)


Swagger 1.2 требует, чтобы все определение модели было плоским — это означает, что у вас не может быть вложенных сложных объектов, только примитивы и ссылки на другие сложные объекты.

Начиная с swagger 2.0, теперь вы можете иметь встроенные, вложенные или анонимные объекты.

Итак, краткий ответ: вы не можете моделировать то, что описываете в 1.2. Если вы можете, рассмотрите возможность обновления своих библиотек для использования swagger 2.0.

person fehguy    schedule 01.04.2016
comment
Благодарю за разъяснение. - person leona; 08.04.2016