我正在使用swagger 0.7.5并尝试将swagger.yaml文件拆分为多个。我使用express
命令来创建项目。选择的框架是swagger.yaml
。执行这些命令创建了一个具有ExpressJS设置和默认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
文件的nodejs项目。由于我的目标是一个大型应用程序,我想将yaml文件分成多个。根据文档,我已经开始将响应模型外部化到外部文件,这就是它的外观
swagger.yaml
type: string
properties:
message:
type: string
模型/响应/ hello_response.yaml
swagger project start
在项目目录的根目录执行命令- api
-- swagger
--- swagger.yaml
- config
-- config.yaml
- models
-- response
--- hello_response.yaml
- app.js
后,服务启动并在浏览器中显示文档。问题是,swagger doc没有显示外部化yaml文件的结构,并显示以下错误消息。
项目的目录结构如下所示
models
注意:我尝试在swagger.yaml
级别复制$(".nav li:nth-child(5)").click(function() {
$(".nav li").toggleClass("active2");
});
目录,但这也不起作用。
答案 0 :(得分:1)
没关系,在尝试了很多选项之后,我终于通过在app.js
app.use("/models", express.static("models"));
答案 1 :(得分:0)
补充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`));