【问题标题】:Swagger with custom configuration not loading params具有自定义配置的 Swagger 不加载参数
【发布时间】:2016-03-22 06:38:00
【问题描述】:

我一直在节点应用程序中使用具有自定义配置和目录结构的 Swagger。

这是我的 app.js 的 sn-p

var swaggerConfig = {
  appRoot: config.get('app_root'),
  configDir: 'swagger/config',
  swaggerFile: 'swagger/api.yaml'
};

SwaggerExpress.create(swaggerConfig, function(err, swaggerExpress) {
  if (err) { throw err; }
  swaggerExpress.register(app);
});

在 config swagger/config 目录下,具有标准 YAML 配置 default.yml

# swagger configuration file

# values in the swagger hash are system configuration for swagger-node
swagger:

  fittingsDirs: [ app/fittings ]
  defaultPipe: null
  swaggerControllerPipe: swagger_controllers  # defines the standard processing pipe for controllers

  # values defined in the bagpipes key are the bagpipes pipes and fittings definitions
  # (see https://github.com/apigee-127/bagpipes)
  bagpipes:

    _router:
      name: swagger_router
      mockMode: false
      mockControllersDirs: [ app/mocks ]
      controllersDirs: [ app/controllers ]

    _swagger_validate:
      name: swagger_validator
      validateResponse: true

    # pipe for all swagger-node controllers
    swagger_controllers:
      - onError: json_error_handler
      - cors
      - swagger_security
      - _swagger_validate
      - express_compatibility
      - _router

    # pipe to serve swagger (endpoint is in swagger.yaml)
    swagger_raw:
      name: swagger_raw

# any other values in this file are just loaded into the config for application access...

现在在控制器 req.swagger.params 上遇到问题,总是返回 null

【问题讨论】:

    标签: node.js swagger swagger-2.0 swagger-tools


    【解决方案1】:

    这在文档中并不清楚,但您还需要在 default.yaml 中将 swagger_params_parser 添加到 swagger_controllers 部分。

      bagpipes:
    
        _router:
          name: swagger_router
          mockMode: false
          mockControllersDirs: [ api/mocks ]
          controllersDirs: [ api/controllers ]
    
        _swagger_validate:
          name: swagger_validator
          validateResponse: true
    
        # pipe for all swagger-node controllers
        swagger_controllers:
          - swagger_params_parser
          - cors
          - swagger_security      
          - _swagger_validate      
          - _router
    

    【讨论】:

    • 非常感谢,这解决了问题。你能给我提供任何参考维基/代码,你可以从哪里找到这个配置层。所以我应该为以后的问题阅读它。一个问题是,为什么 swagger_params_parser 没有出现在示例 helloworld 应用程序中,并且 params 仍然有效。
    • @NazarHussain 在我发现的示例中他们完全省略了swagger_controllers,所以我调试了代码并找到了所有使用的风笛并找到了这个:)
    • 很抱歉你发现你必须调试这个。包含此信息的指南在这里:github.com/theganyo/swagger-node-runner/releases/tag/v0.6.0
    • @ScottGanyo 太棒了!并感谢伟大的工具,顺便说一句:)
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多