Swagger-hapi: path /models 产生错误

Swagger-hapi: path /models generate errors

以下 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);
});

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

解决这个问题的简单方法是使用 nickname。这会大摇大摆地更改内部引用,但 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')
            }
        }
    }
}