【问题标题】:How to access swagger yaml defined objects from javascript如何从javascript访问swagger yaml定义的对象
【发布时间】:2017-02-03 19:32:17
【问题描述】:

我使用 Swagger Yaml 来描述端点并生成模拟服务器。现有端点(我正在模拟)没有 100% 遵循 RESTful 原则,所以我只想覆盖模拟服务器返回的响应。简单的服务器代码如下所示:

var swagger         = require('swagger-server');
var server          = swagger('map-cache.yaml');

var port            = 7072;

server.post('/map-qa_trunk/v2/getData', function(req, res, next) {
    var foo = { 
        err : 123,
        msg : "error message"
    };  
    res.json(foo);
});

server.listen(port, function() {
  console.log('Map Cache Mock Server is now running at http://localhost:' + port);
});

在 Yaml 定义中,定义了一个名为 MapResponseData 的对象,如何创建该对象的实例,以便根据需要填充它并在 res.json() 中返回?类似于以下内容:

var response = getMapResponseData(); // don't know what this call should be
response.fieldA = 123;
res.json(response);

我猜这应该是可能的,因为 Swagger 解析了 YAML 文件并且知道所有指定的定义。

【问题讨论】:

    标签: swagger swagger-ui swagger-2.0 swagger-editor swagger-codegen


    【解决方案1】:

    尝试将请求对象输出到 console.log 以查看是否可以找到对 swagger 定义的引用。另一种选择是从 yaml 文件中提取已解析的 swagger 定义(例如使用 js-yaml)并从中提取。

    但是,我最好的建议是使用 swagger-tools 而不是 swagger-server。 swagger-server 软件包是 alpha 版本,与 swagger-tools 相比,下载、修订和用户更少。 swagger-tools 的好处是它会被积极维护,并且有一个更大的社区可以支持你。要将您的项目转换为 swagger-tools,请使用 swagger.io > Swagger Editor > Online Editor > Paste yaml in left pane > Generate Server > Node.js

    在 swagger-tools 中,整个 Swagger Yaml 定义包含在每个请求对象中:

    req.swagger.swaggerObject
    

    您可以根据需要从中提取响应对象定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2016-02-11
      • 2016-10-31
      • 2019-12-27
      • 1970-01-01
      • 2019-09-25
      • 2021-09-05
      相关资源
      最近更新 更多