如何为某些路线拨打Hapi插件?

时间:2016-01-28 11:03:26

标签: plugins hapijs

我正在使用Hapi 12.1。

试图找出如何仅在某些路线上呼叫某些分机点。

例如: ' /你好' 我想调用三个不同的扩展点,这些扩展点适用于' onRequest'步骤

有关: ' /再见' 我想调用一个不同的扩展点,该扩展点也适用于' onRequest'但这是一个不同的操作和一个onPreAuth'步骤

有关: ' /健康' 不要打电话给任何扩展点,直接进入处理程序..

我尝试了各种方法来创建插件,定义路由和扩展点。但似乎扩展点是全局的,并且不仅仅是对插件的范围路径进行操作。

我错过了什么?

1 个答案:

答案 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
        }
    }
});