我正在使用swagger0.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
Note:我尝试在swagger.yaml
级别复制models
目录,但这也不起作用。
发布于 2016-03-17 12:00:43
没关系,在尝试了许多选项之后,我终于通过在app.js
中添加以下行来解决了这个问题
app.use("/models", express.static("models"));
发布于 2017-10-26 04:24:44
补充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`));
https://stackoverflow.com/questions/36057369
复制相似问题