在swagger ui中使用多个Json文件
我正在使用,我在本地托管了它,并为它提供了我自己的Json文件和API,它可以很好地打开文档并列出Json文件中的所有方法,但是Json文件变得非常大,我想使用多个Json文件,一次打开一个,我不知道如何为它提供多个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) {
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
});