Swagger-hapi:路径/模型会产生错误

时间:2015-11-03 19:52:54

标签: node.js hapijs

以下NodeJS Hapi代码在http://localhost:3000/documentation

查询时生成错误

如果我将端点的路径更改为 / models 以外的其他路径,例如 / users ,则一切正常。看起来端点 / models 是保留的。

知道为什么除了 / models 之外还有其他任何端点可以工作吗?我该如何解决?由于太多人使用它,我无法更改URL。

var Hapi            = require('hapi'),
    Inert           = require('inert'),
    Vision          = require('vision'),
    Joi             = require('joi'),
    HapiSwagger     = require('hapi-swagger')


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

var swaggerOptions = {
    apiVersion: "1.0"
};

server.register([
    Inert,
    Vision,
    {
        register: HapiSwagger,
        options: swaggerOptions
    }], function (err) {
    server.start(function(){
        // Add any server.route() config here
        console.log('Server running at:', server.info.uri);
    });
});

server.route(
    {
        method: 'GET',
        path: '/models',
        config: {
            handler: function (request, reply) {
                reply("list of models")
            },
            description: 'Get todo',
            notes: 'Returns a todo item by the id passed in the path',
            tags: ['api'],
            validate: {
                params: {
                    username: Joi.number()
                        .required()
                        .description('the id for the todo item')
                }
            }
        }
    }
)



server.start(function(){
    // Add any server.route() config here
    console.log('Server running at:', server.info.uri);
});

1 个答案:

答案 0 :(得分:2)

models是swagger内部结构的一部分,在处理使用模型作为端点URL的一部分的端点时,swagger.js文件中存在问题

对此的简单修复是使用nickname。这会在swagger中更改内部参考,但UI仍然应该说models并且它将正确触发您的端点。

{
    method: 'GET',
    path: '/models/{username}',
    config: {
        handler: function (request, reply) {
            reply("list of models")
        },
        description: 'Get todo',
        notes: 'Returns a todo item by the id passed in the path',
        tags: ['api'],
        plugins: {
            'hapi-swagger': {
              nickname: 'modelsapi'
            }
          },
        validate: {
            params: {
                username: Joi.number()
                    .required()
                    .description('the id for the todo item')
            }
        }
    }
}