Hapi js从另一条路线进入一条路线

时间:2016-05-26 05:17:42

标签: javascript hapijs

我有2条路线test_01和test_02。 当请求到test_02路由时,如何访问路由test_01并获取其响应数据?

我不是在谈论从test_02到test_01的转发路由

server.route({
    method: 'GET',
    path: '/data/test_01',
    handler: function (request, reply) {
        reply('test_01')
    }
})

server.route({
    method: 'GET',
    path: '/data/test_02',
    handler: function (request, reply) {
        // Get data from route '/data/test_01'
        var test_01_data = ''
        reply(test_01_data)
    }
})

控制器

Index = function () {}

Index.prototype = {

    test_01 : function (req, reply, data) {
        reply('test_01')
    },

    test_02 : function (req, reply, data) {
        reply('test_02')
    }
}

module.exports = Index

2 个答案:

答案 0 :(得分:0)

从处理程序中调用单独的控制器函数

var controllerfn = function(req,reply){
     //do stuff
  return 'test_01';
};

根据需要调用

server.route({
  method: 'GET',
  path: '/data/test_01',
  handler: function (request, reply) {
             reply(controllerfn(request,reply);
  }
})  

server.route({
  method: 'GET',
  path: '/data/test_02',
  handler: function (request, reply) {
    // Get data from route '/data/test_01'
    var test_01_data = controllerfn(request,reply);
    reply(test_01_data)
  }
})

答案 1 :(得分:0)

如果要重用该路由而不进行另一个套接字连接,则可以inject到另一个路由。

  server.route({
      method: 'GET',
      path: '/data/test_01',
      handler: function (request, reply) {
          reply('test_01')
      }
  })

  server.route({
      method: 'GET',
      path: '/data/test_02',
      handler: function (request, reply) {
          // Get data from route '/data/test_01'
          request.server.inject({
            url: {
              pathname: '/data/test_01'
            }
          }, (res) => {
            var test_01_data = res.result;
            return reply(test_01_data);
          })
      }
  })