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