2015-11-02 15 views
0

我想具体的自定义标题发送到路线如何将一个自定义标题发送到各种反应的高致病性禽流感服务器的路由发送

的事情就是我的路由处理程序如下:

function(req,reply){ 
    if(req.file) req.file.on('error', reply); 
    else { 
    if(cond1) reply('OK'); 
    else if(cond2) reply({obj:obj2}); 
    else if(cond3) reply(boom.badRequest('Ohhh.. Something wrong')); 
    else .. // so many conditions. 
    } 
} 

我想只设置一次自定义标题,而不是每次执行条件。

我该怎么做? 在hapi文档中,我只能找到通过链接或详细发送标题。这两种情况都不适合。因为我将不得不在代码中一次又一次地写同样的东西。

制作通用功能是可以的,但我想要更简单的东西。 像这样reply.setHeaderForAllResponseInThisRoute(myHeaderName, value);

回答

0

调用reply(value)给你一个response对象提供value是不是一个错误。如果这是一个错误,你会得到一个Boom对象。

响应对象有一个可链接header(key. value)方法,你可以利用到你所需要的:

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

     var cond1 = ...; 
     var cond2 = ...; 
     var cond3 = ...; 
     var response; 

     if (cond1) { 

      // header only applied in this condition 

      response = reply(...).header('x-custom-header', 'custom'); 
     } else if (cond2) { 
      response = reply(...); 
     } else if (cond3) { 
      response = reply(...); 
     } else { 
      response = reply(...); 
     } 

     // Headers applied to all responses except errors 

     if (!response.isBoom) { 
      response.header('x-header-1', 'value1') 
        .header('x-header-2', 'value2'); 
     } 
    } 
}); 
+0

不与繁荣工作。 '回复(boom.badRequest('message'))'没有方法头。我应该如何设置标题呢? – user3585284

+0

我在回答中提到:“调用'reply(value)'给你一个响应对象提供的值不是错误','boom.badRequest'返回一个错误。这就是为什么我的代码检查它不是繁荣对象。 –

相关问题