我正在使用Hapi 12.1。
试图找出如何仅在某些路线上呼叫某些分机点。
例如: ' /你好' 我想调用三个不同的扩展点,这些扩展点适用于' onRequest'步骤
有关: ' /再见' 我想调用一个不同的扩展点,该扩展点也适用于' onRequest'但这是一个不同的操作和一个onPreAuth'步骤
有关: ' /健康' 不要打电话给任何扩展点,直接进入处理程序..
我尝试了各种方法来创建插件,定义路由和扩展点。但似乎扩展点是全局的,并且不仅仅是对插件的范围路径进行操作。
我错过了什么?
答案 0 :(得分:3)
您可以使用request.route.path
访问扩展点上的路径。有了它,您可以根据路径定义要运行的内容。例如:
server.ext('onPreAuth', function (request, reply) {
switch(request.route.path) {
case '/test1':
case '/test2':
// Do something
break;
case '/test3':
// Do something else
break;
}
reply.continue();
});
或者,您也可以使其取决于路线配置:
server.ext('onPreAuth', function (request, reply) {
if(request.route.settings.plugins.runPreAuth) {
// Do something
}
reply.continue();
});
然后,您只需在路线中定义配置:
server.route({
method: 'get',
path: '/test1',
handler: function(request, reply) {
reply({result: 'ok'});
},
config: {
plugins: {
runPreAuth: true
}
}
});