6

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

以下路线应可用于路径/api/1/pets而不是/pets

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

3 回答 3

2

似乎您无法为整个应用程序全局执行此操作。但是可以为插件中定义的所有路由添加前缀:

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

希望这可以帮助。

以防万一,如果您要尝试通过事件为新路线添加基本路径,那是行不通的。

于 2017-09-06T02:08:57.770 回答
1

最好的选择是在路径中使用常量 -

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

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

于 2017-09-10T20:58:13.547 回答
0

我在Hapi docs中没有看到这样的选项。不过,我可以建议你一个小的解决方法。做一些功能:

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

然后以这种方式使用它:

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

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

于 2017-09-05T11:31:03.270 回答