swagger listing api for worknik

时间:2016-10-09 06:35:33

标签: node.js swagger swagger-ui

我使用swagger-express npm模块来配置与我的服务器并行的api文档,这样可以帮助开发人员跟踪所有api。

我的文件夹结构是什么

/
/api
    swagger/
           swagger.json
           swagger.yml
/swagger /*Having all the index file and configs as given their like public dir*/

我的中间件配置就像这样

var swagger = require('swagger-express');
app.use(swagger.init(app, {
    apiVersion    : '1.0',
    swaggerVersion: '1.0',
    swaggerURL    : '/swagger',
    swaggerJSON   : 'api/swagger/swagger.json',
    swaggerUI     : './swagger/',
    basePath      : 'http://localhost:1222',
    info          : {
        title      : 'swagger-express sample app',
        description: 'Swagger + Express = {swagger-express}'
    },
    apis          : ['api/swagger/swagger.yml'],
    middleware    : function (req, res) {}
}));               

我的服务器正在端口1222上运行。现在尽管SwaggerUI已经成功加载但是它从wordnik的域中读取了api。

  1. 如何从我的swagger.yml
  2. 中读取apis
  3. 如果我提到swagger.yml,那么swagger.json
  4. 的相关性和用途是什么
  5. SwaggerUI中的discoverURL是什么?如果我提到我的json路径(http://localhost:1222/swagger/),那么它会以' discoveryUrl basePath必须是URL的错误结束。'
  6. 他们能以任何方式将所有apis列入服务器并行吗?所以它也可以测试?我喜欢招摇。

1 个答案:

答案 0 :(得分:2)

嘿,试试这个https://www.npmjs.com/package/hapi-swagger

npm install hapi-swagger --save

npm install inert --save

npm install vision --save

const Hapi = require('hapi');
const Inert = require('inert');
const Vision = require('vision');
const HapiSwagger = require('hapi-swagger');
const Pack = require('./package');

const server = new Hapi.Server();
server.connection({
        host: 'localhost',
        port: 3000
    });

const options = {
    info: {
            'title': 'Test API Documentation',
            'version': Pack.version,
        }
    };

server.register([
    Inert,
    Vision,
    {
        'register': HapiSwagger,
        'options': options
    }], (err) => {
        server.start( (err) => {
           if (err) {
                console.log(err);
            } else {
                console.log('Server running at:', server.info.uri);
            }
        });
    });

server.route(Routes);