我使用的是 Hapi 12.1。
尝试弄清楚如何仅在某些路线上调用某些分机点。
例如: '/你好' 我想调用在“onRequest”步骤中工作的三个不同的扩展点。
对于: '/再见' 我想调用一个不同的扩展点,该扩展点也适用于“onRequest”,但它是不同的操作和“onPreAuth”步骤。
对于: '/健康' 不要调用任何扩展点,直接放入处理程序中..
我尝试了各种方法来创建插件、定义路由和扩展点。但扩展点似乎是全局的,并且不仅仅在插件的作用域路由上操作。
我错过了什么?
最佳答案
您可以使用 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();
});
然后,您只需在 route 定义配置:
server.route({
method: 'get',
path: '/test1',
handler: function(request, reply) {
reply({result: 'ok'});
},
config: {
plugins: {
runPreAuth: true
}
}
});
关于plugins - 如何调用某些路由的Hapi插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35059682/