检查Hapi代理处理程序中的现有路由

时间:2016-04-11 23:00:11

标签: proxy legacy hapijs

场景:我有一个现有的遗留应用程序,它有很多路由。我正在开发具有所有新路由的HAPI API。随着时间的推移,我会将所有现有路线转换为hapi。如果传入路由与现有HAPI路由不匹配,我会将其转发到旧系统。

如何在将其转发到其他遗留系统之前检查我的所有当前hapi路由以获取传入路由请求?任何一个例子,建议都会很明显。

1 个答案:

答案 0 :(得分:1)

这是h2o2插件的一个很好的用例。它是hapi的代理处理程序插件。

注册插件:

const Hapi = require('hapi');
const server = new Hapi.Server();

server.register({
    register: require('h2o2')
}, function (err) {

    if (err) {
        console.log('Failed to load h2o2');
    }

    server.start(function (err) {

        console.log('Server started at: ' + server.info.uri);
    });
});

创建一个hapi路由,将请求转发给另一个:

server.route({
    method: 'GET',
    path: '/',
    handler: {
        proxy: {
            uri: 'https://some.upstream.service.com/that/has?what=you&want=todo'
        }
    }
});

如果需要,您还可以添加更多complicated route handling。查看文档。