是否可以在 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 文件中定义常量