从我的Hapi路线回复Boom错误时......
{
method: 'PUT',
path:'foo',
handler: function (request, reply) {
reply(Boom.badRequest('something', { stuff: 'and more' }));
}
}
...我收到以下回复:
{"statusCode":400,"error":"Bad Request","message":"something"}
它缺少提供错误详情的数据对象!这笔交易是什么?
答案 0 :(得分:12)
在Hapi documentation上,它引用了热门对象上的output.payload
属性,默认设置为包括statusCode
,error
和message
。
我可以通过在此对象上设置.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错误。