Как объединить swagger несколько файлов в один файл swagger doc? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть разные файлы swagger для нескольких API, например swagger1.json для API OpenStack, swagger2.json для API пользователей и т. Д., И я пытался объединить все эти файлы swagger в один файл, используя метод $ ref для удаленного доступа.

Вот файл swagger1.json для API OpenStack

{
    "stacks": {
        "get": {
            "tags": [
                "openstack"
            ],
            "summary": "Returns stacks from OpenStack",
            "description": "Returns all stacks from the OpenStack based on tenantId.",
            "consumes": [
                "application/json"
            ],
            "produces": [
                "application/json"
            ],
            "parameters": [
                {
                    "in": "query",
                    "type": "string",
                    "name": "tenantId",
                    "description": "search stacks for tenantId from OpenStack",
                    "required": false
                }
            ],
            "responses": {
                "200": {
                    "description": "OK"
                },
                "400": {
                    "description": "Unknown Error"
                },
                "401": {
                    "description": "Unauthorized"
                }
            }
        }
    }

}

И это файл swagger-merge.json, в который я хочу добавить несколько документов swagger doc, используя удаленную ссылку.

{
"swagger": "2.0",
"info": {
    "description": "something here",
    "version": "v0.7.0",
    "title": "The API Gateway",
    "contact": {
        "email": "dp@gmail.com"
    }
},
"host": "localhost",
"port":"9191",
"basePath": "/api/openstack",
"tags": [
    {
        "name": "OpenStackApi",
        "description": "Get stacks and running instance form OpenStack"
    }
],
"schemes": [
    "https"
],
"paths": {
    "$ref": "./swagger1.json#/stacks"
}

}

Это не работает для меня.Я не могу увидеть методы API, которые я написал внутри файла swagger1.json.У меня есть выход swaggerUI.Любая идея о том, что я делаю неправильно и как я могу решить эту проблему? enter image description here

1 Ответ

0 голосов
/ 12 июня 2018

Вы не можете $ref все содержимое paths, вы можете ссылаться только на отдельные элементы пути:

"paths": {
   "/stacks": {    <--- endpoint path
     "$ref": "./swagger1.json#/stacks"
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...