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`));

尝试后:http://localhost:port/paths/yourfile.yaml