首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >摇摆分裂定义yaml -模型结构未显示

摇摆分裂定义yaml -模型结构未显示
EN

Stack Overflow用户
提问于 2016-03-17 10:09:33
回答 2查看 723关注 0票数 0

我正在使用swagger0.7.5并试图将swagger.yaml文件拆分为多个文件。我使用swagger project create sample-api命令创建了这个项目。选择的框架是express。这些命令的执行创建了一个具有ExpressJS设置和默认swagger.yaml文件的nodejs项目。由于我的目标是一个大的应用程序,我想将yaml文件分割成多个。根据文档,我已经开始将响应模型外部化为外部文件,下面是它的外观。

swagger.yaml

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
type: string
properties:
  message:
    type: string

在项目目录根目录下执行命令swagger project start之后,服务将启动,并在浏览器中显示文档。问题是,swagger不显示外部化yaml文件的结构,并显示以下错误消息。

项目的目录结构如下所示

代码语言:javascript
运行
复制
- api  
-- swagger
--- swagger.yaml
- config
-- config.yaml
- models
-- response
--- hello_response.yaml
- app.js

Note:我尝试在swagger.yaml级别复制models目录,但这也不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-17 12:00:43

没关系,在尝试了许多选项之后,我终于通过在app.js中添加以下行来解决了这个问题

代码语言:javascript
运行
复制
app.use("/models", express.static("models"));
票数 1
EN

Stack Overflow用户

发布于 2017-10-26 04:24:44

补充CuriousMind的答复

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36057369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档