在swagger ui中使用多个Json文件

在swagger ui中使用多个Json文件,swagger,swagger-ui,swagger-2.0,Swagger,Swagger Ui,Swagger 2.0,我正在使用,我在本地托管了它,并为它提供了我自己的Json文件和API,它可以很好地打开文档并列出Json文件中的所有方法,但是Json文件变得非常大,我想使用多个Json文件,一次打开一个,我不知道如何为它提供多个Json文件并使用它们,因为我在索引页中提供的单个文件如下所示: var url = window.location.search.match(/url=([^&]+)/); if (url && url.length > 1) {

我正在使用,我在本地托管了它,并为它提供了我自己的Json文件和API,它可以很好地打开文档并列出Json文件中的所有方法,但是Json文件变得非常大,我想使用多个Json文件,一次打开一个,我不知道如何为它提供多个Json文件并使用它们,因为我在索引页中提供的单个文件如下所示:

  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";
  }

您的Swagger JSON的基本结构应该如下所示:

{
"swagger": "2.0",
"info": {
    "title": "",
    "version": "version number here"
},
"basePath": "/",
"host": "host goes here",
"schemes": [
    "http"
],
"produces": [
    "application/json"
],
"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."
        }
    }
}
}
型号:

{
"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对象中的相应对象(路径
或定义
中),并将该基本对象作为您的swagger JSON对象提供服务

您还可以通过在服务器启动时只进行一次追加来进一步优化此功能(因为服务器运行时API文档不会更改)。然后,当点击“serve Swagger docs”端点时,您可以返回在服务器启动时创建的缓存的Swagger JSON对象

通过捕获对
/api docs
的请求,可以拦截“serve Swagger docs”端点,如下所示:

app.get('/api-docs', function(req, res) {
  // return the created Swagger JSON object here
});