swagger 拆分定义 yaml - 未显示模型结构
swagger split definition yaml - model structure not shown
我正在使用 swagger 0.7.5 并尝试将 swagger.yaml 文件拆分为多个。我使用 swagger project create sample-api
命令来创建项目。选择的框架是 express
。执行这些命令创建了一个带有 ExpressJS 设置和默认 swagger.yaml
文件的 nodejs 项目。由于我的目标是大型应用程序,因此我想将 yaml 文件拆分成多个。根据文档,我已经开始将响应模型外部化到外部文件,这就是它的样子
swagger.yaml
swagger: "2.0"
info:
version: "0.0.1"
title: Hello Service
host: localhost:10010
basePath: /
... #skipping code for brevity
paths:
/hello:
x-swagger-router-controller: user
get:
description: Say hello
operationId: hello
parameters:
- name: name
in: query
description: The name of the person to whom to say hello
required: false
type: string
responses:
"200":
description: Success
schema:
# a pointer to a definition
$ref: "#/definitions/HelloResponse"
default:
description: Error
schema:
$ref: "#/definitions/ErrorResponse"
/swagger:
x-swagger-pipe: swagger_raw
definitions:
HelloResponse:
$ref : models/response/hello_response.yaml
ErrorResponse:
required:
- message
properties:
message:
type: string
models/response/hello_response.yaml
type: string
properties:
message:
type: string
在项目目录的根目录下执行命令swagger project start
后,服务启动并在浏览器中显示文档。问题是,swagger 文档不显示外部化 yaml 文件的结构并显示以下错误消息。
项目的目录结构如下所示
- api
-- swagger
--- swagger.yaml
- config
-- config.yaml
- models
-- response
--- hello_response.yaml
- app.js
注意:我尝试在 swagger.yaml
级别复制 models
目录,但这也没有用。
没关系,在尝试了很多选项之后,我终于通过在 app.js
中添加以下行解决了这个问题
app.use("/models", express.static("models"));
补充 CuriousMind 的回应
const appRoot = require('app-root-path');
app.use("/paths", express.static(`${appRoot}/api/swagger/paths`));
app.use("/models", express.static(`${appRoot}/api/swagger/models`));
我正在使用 swagger 0.7.5 并尝试将 swagger.yaml 文件拆分为多个。我使用 swagger project create sample-api
命令来创建项目。选择的框架是 express
。执行这些命令创建了一个带有 ExpressJS 设置和默认 swagger.yaml
文件的 nodejs 项目。由于我的目标是大型应用程序,因此我想将 yaml 文件拆分成多个。根据文档,我已经开始将响应模型外部化到外部文件,这就是它的样子
swagger.yaml
swagger: "2.0"
info:
version: "0.0.1"
title: Hello Service
host: localhost:10010
basePath: /
... #skipping code for brevity
paths:
/hello:
x-swagger-router-controller: user
get:
description: Say hello
operationId: hello
parameters:
- name: name
in: query
description: The name of the person to whom to say hello
required: false
type: string
responses:
"200":
description: Success
schema:
# a pointer to a definition
$ref: "#/definitions/HelloResponse"
default:
description: Error
schema:
$ref: "#/definitions/ErrorResponse"
/swagger:
x-swagger-pipe: swagger_raw
definitions:
HelloResponse:
$ref : models/response/hello_response.yaml
ErrorResponse:
required:
- message
properties:
message:
type: string
models/response/hello_response.yaml
type: string
properties:
message:
type: string
在项目目录的根目录下执行命令swagger project start
后,服务启动并在浏览器中显示文档。问题是,swagger 文档不显示外部化 yaml 文件的结构并显示以下错误消息。
项目的目录结构如下所示
- api
-- swagger
--- swagger.yaml
- config
-- config.yaml
- models
-- response
--- hello_response.yaml
- app.js
注意:我尝试在 swagger.yaml
级别复制 models
目录,但这也没有用。
没关系,在尝试了很多选项之后,我终于通过在 app.js
app.use("/models", express.static("models"));
补充 CuriousMind 的回应
const appRoot = require('app-root-path');
app.use("/paths", express.static(`${appRoot}/api/swagger/paths`));
app.use("/models", express.static(`${appRoot}/api/swagger/models`));