我正在使用Swagger-ui version 2.1.4,我在本地托管它,并提供了我自己的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";
}
答案 0 :(得分: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中的某个对象是" 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对象中的相应对象(paths
或definitions
),并将该基础对象作为Swagger JSON对象提供
您还可以通过在服务器启动时仅执行一次附加来进一步优化此功能(因为在服务器运行时API文档不会更改)。然后,当"服务Swagger docs"如果端点被命中,您只需返回在服务器启动时创建的缓存的Swagger JSON对象。
"提供Swagger文档"可以通过将请求发送到/api-docs
来拦截端点,如下所示:
app.get('/api-docs', function(req, res) {
// return the created Swagger JSON object here
});