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