У меня есть следующая настройка с Hapi js 18.4.x (показывает только соответствующий код ниже)
// ./index.js
await server.register(
{ plugin: require('./api/v2/index.js'), options: {} },
{ routes: { prefix: '/v2' } }
);
// ./api/v2/index.js
exports.plugin = {
register: async function(server, options) {
await server.register([
{ plugin: require('./resources/resource1') },
{ plugin: require('./resources/resource2') },
{ plugin: require('./resources/resource3') }
// and so on
]);
}
};
// ./api/v2/resources/resource1.js
// (similar code in other resource{\d}.js files)
module.exports = return {
plugin: {
name: resource1,
register: function(server, options) {
server.route([{
path: '/resource1',
method: 'GET',
handler: handler
}]);
},
},
}
все в порядке, если запрошенный путь правильный. Если запрошенный путь неверен, то приложение переходит в бесконечное число l oop, добавляя /v2
к URI до тех пор, пока оно не выйдет из строя. Например, если запрос для http://server/v2/resrouce1?param1=foo¶m2=bar
(опечатка resrouce1
вместо resource1
), браузер показывает следующее в строке URL-адреса, и сервер выдает сбой с Внутренняя ошибка сервера: Ошибка разбора
http://server/v2/v2/v2/v2/v2/v2… ad infinitum till crash… /v2/resrouce1?param1=foo¶m2=bar
Что я делаю не так и как я могу это исправить, чтобы, если кто-то вводит неверный путь, возвращается правильный 404, а не бесконечный l oop перенаправлений.