我希望每个hapi路由路径都以前缀 ( /api/1
) 开头,而不是将其添加到每个路由中。这可能吗?
以下路线应可用于路径/api/1/pets
而不是/pets
const Hapi = require('hapi');
const server = new Hapi.Server();
server.route({
method: 'GET',
path: '/pets'
})
我希望每个hapi路由路径都以前缀 ( /api/1
) 开头,而不是将其添加到每个路由中。这可能吗?
以下路线应可用于路径/api/1/pets
而不是/pets
const Hapi = require('hapi');
const server = new Hapi.Server();
server.route({
method: 'GET',
path: '/pets'
})
似乎您无法为整个应用程序全局执行此操作。但是可以为插件中定义的所有路由添加前缀:
server.register(require('a-plugin'), {
routes: {
prefix: '/api/1'
}
});
希望这可以帮助。
以防万一,如果您要尝试通过事件为新路线添加基本路径,那是行不通的。
最好的选择是在路径中使用常量 -
server.route({
method: 'GET',
path: constants.route.prefix + '/pets')
});
并在静态 constants.js 文件中定义常量
我在Hapi docs中没有看到这样的选项。不过,我可以建议你一个小的解决方法。做一些功能:
function createRoutePath(routePath) {
return `/api/1${routePath}`;
}
然后以这种方式使用它:
server.route({
method: 'GET',
path: createRoutePath('/pets')
});
更新: 作为另一种解决方法,保持原样,并设置代理 Web 服务器。例如 nginx。