是否有可能在hapi中定义一个全局的基本path

我希望每个hapi路由path都以前缀( /api/1 )开始,而不必将其添加到每个路由。 这可能吗?

下面的路线应该是可用的path/api/1/pets而不是/pets

 const Hapi = require('hapi'); const server = new Hapi.Server(); server.route({ method: 'GET', path: '/pets' }) 

       

网上收集的解决方案 "是否有可能在hapi中定义一个全局的基本path"

最好的select是在path中使用常数 –

 server.route({ method: 'GET', path: constants.route.prefix + '/pets') }); 

并在静态constants.js文件中定义常量

似乎你不能在整个应用程序全局做。 但是可以为插件中定义的所有路由添加前缀:

 server.register(require('a-plugin'), { routes: { prefix: '/api/1' } }); 

希望这可以帮助。

以防万一,如果你要尝试通过新的路线事件添加基地path,它不会工作。

在Hapi文档中我没有看到这样的选项。 不过,我可以build议你一个小的解决方法。 做一些function:

 function createRoutePath(routePath) { return `/api/1${routePath}`; } 

然后用这个方法:

 server.route({ method: 'GET', path: createRoutePath('/pets') }); 

更新:作为另一种解决方法,请保持原样并设置代理Web服务器。 例如nginx。