2016-02-16 2 views
2

Я использую Swagger-ui version 2.1.4, я размещал его локально и предоставлял ему свой собственный Json-файл и API, он отлично раскрывает документ и перечисляет весь метод в json-файле, но json-файл становится очень большой, я хочу использовать несколько json-файлов и хочу открывать один за раз, я не знаю, как предоставить ему несколько json-файлов и использовать их, потому что один файл, который я представил на индексной странице, был следующим:Использовать несколько файлов Json в swagger-ui

var url = window.location.search.match(/url=([^&]+)/); 
    if (url && url.length > 1) { 
     url = decodeURIComponent(url[1]); 
    } else { 
     url = "http://localhost:1122/Json/Swagger-ui2.1.4V1.JSON"; 
    } 

ответ

1

базовая структура вашего Swagger JSON должна выглядеть следующим образом:

{ 
"swagger": "2.0", 
"info": { 
    "title": "", 
    "version": "version number here" 
}, 
"basePath": "/", 
"host": "host goes here", 
"schemes": [ 
    "http" 
], 
"produces": [ 
    "application/json" 
], 
"paths": {}, 
"definitions": {} 
} 

paths и definitions - это то, где вам нужно вставить пути, поддерживаемые вашим API, и определения моделей, описывающие ваши объекты ответа. Вы можете динамически заполнять эти объекты. Одним из способов сделать это может быть отдельный файл для путей и моделей каждого объекта.

Скажем, один из объектов вашего API - это «автомобиль».

Путь:

{ 
"paths": { 
    "/cars": { 
     "get": { 
      "tags": [ 
       "Car" 
      ], 
      "summary": "Get all cars", 
      "description": "Returns all of the cars.",    
      "responses": { 
       "200": { 
        "description": "An array of cars", 
        "schema": { 
         "type": "array", 
         "items": { 
          "$ref": "#/definitions/car" 
         } 
        } 
       }, 
       "404": { 
        "description": "error fetching cars", 
        "schema": { 
         "$ref": "#/definitions/error" 
        } 
       } 
      } 
     } 
    } 
} 

Модель:

{ 
"car": { 
    "properties": { 
     "_id": { 
      "type": "string", 
      "description": "car unique identifier" 
     }, 
     "make": { 
      "type": "string", 
      "description": "Make of the car" 
     }, 
     "model":{ 
      "type": "string", 
      "description": "Model of the car." 
     } 
    } 
} 
} 

Вы можете затем поместить каждый из них в своих собственных файлах. Когда вы запускаете свой сервер, вы можете захватить эти два объекта JSON и присоединить их к соответствующему объекту в своем объекте swagger (paths или definitions) и служить этому базовому объекту в качестве объекта Swagger JSON.

Вы также можете оптимизировать это, выполнив однократное добавление сразу после запуска сервера (поскольку документация API не будет изменяться во время работы сервера). Затем, когда удаляется конечная точка «обслуживать Swagger docs», вы можете просто вернуть кэш-объект Swagger JSON, созданный при запуске сервера.

Конечной «служат чванство документы» могут быть перехвачены, ловя запрос на /api-docs, как показано ниже:

app.get('/api-docs', function(req, res) { 
    // return the created Swagger JSON object here 
}); 
Смежные вопросы