Hapi不会从Boom错误返回数据属性

时间:2014-12-13 20:32:04

标签: javascript hapijs

从我的Hapi路线回复Boom错误时......

{
      method: 'PUT',
      path:'foo',
      handler: function (request, reply) {
        reply(Boom.badRequest('something', { stuff: 'and more' }));
      }
}

...我收到以下回复:

{"statusCode":400,"error":"Bad Request","message":"something"}

它缺少提供错误详情的数据对象!这笔交易是什么?

2 个答案:

答案 0 :(得分:12)

Hapi documentation上,它引用了热门对象上的output.payload属性,默认设置为包括statusCodeerrormessage

我可以通过在此对象上设置.details来输出繁荣错误的详细信息:

{
      method: 'PUT',
      path:'foo',
      handler: function (request, reply) {
        var err = Boom.badRequest('something', { stuff: 'and more' });
        err.output.payload.details = err.data;
        reply(err);
      }
}

这不是世界上最理想的事情,但可能是一个安全的默认设置。

答案 1 :(得分:2)

我有同样的问题,虽然我不能采取你采取的方法,但Boom FAQ中有以下内容:

  

问题如何在回复中包含额外信息? output.payload   缺少数据,是什么给出了?

     

答案在响应有效负载中传回值的原因   非常被锁定。这主要是为了安全,不漏任何   重要信息回馈给客户。这意味着你需要   付出更多努力,包括有关你的额外信息   自定义错误。查看hapi中的"Error transformation"部分   文档。

同时

我发现(奇怪地),正如文档所示(但不是示例用法),将消息传递给badImplementation被忽略,而将消息传递给notImplemented - 两者都是5xx错误。

文档:badImplementation vs notImplemented