happy 不会从 Boom 错误返回数据属性
Hapi does not return data attribute from Boom error
当回复我的快乐路线的繁荣错误时......
{
method: 'PUT',
path:'foo',
handler: function (request, reply) {
reply(Boom.badRequest('something', { stuff: 'and more' }));
}
}
。我得到以下响应:
{"statusCode":400,"error":"Bad Request","message":"something"}
它缺少提供错误详细信息的数据对象! 怎么回事?
在快乐的文档中,它引用了 boom 对象上的 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);
}
}
这不是世界上最理想的东西,但可能是安全的默认值。
我有同样的问题,虽然我不能采取你采取的方法,但 Boom 常见问题解答中有以下内容:
问题 如何在回复中包含额外信息? output.payload 缺少数据,是什么?
答案 在响应有效负载中传回的值是有原因的 被锁定了。这主要是为了安全,并且不会泄漏任何 重要信息返回给客户。这意味着您将需要 付出更多的努力来包含有关您的额外信息 自定义错误。查看快乐中的"错误转换"部分 文档。
也:
我发现(奇怪的是),正如文档所示(但不是示例用法),将消息传递给badImplementation
将被忽略,而将消息传递给notImplemented
- 两者都是 5xx 错误。
文档:不良实施与未实现
传递额外的参数是通过数据对象完成的,但是,如代码中所述
/**
* Custom error data with additional information specific to the error type
*/
data?: Data;
它只是特定错误类型的特定信息
如果您完全坚持添加额外的参数,我找到了解决方法
const err = Boom.badData('this is bad data message')
err.output.payload = { ...err.output.payload, attributes: { a: 'bb', c: 'ddd' } }
return err
这将产生以下有效负载:
{
"statusCode": 422,
"error": "Unprocessable Entity",
"message": "this is bad data message",
"attributes": {
"a": "bb",
"c": "ddd"
}
}
您可以编写自己的函数来包装这段代码并使用它
- CKFinder 3为所选文件返回错误的URL
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 用于查询错误转换的角度资源返回列表
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- WebView返回错误的window.innerHeight
- Javascript表单验证:表单在错误返回时提交:
- 谷歌地图上的常量错误返回maxZoomService.getMaxZoomAtLatLng()
- Jquery .ajax POST 函数错误返回 asp.net MVC.
- happy 不会从 Boom 错误返回数据属性
- 操作结果在 ajax 调用中作为错误返回
- 我得到了错误“返回绑定”.PBKDF2(密码、盐、迭代、keylen、回调);^ TypeError: Not a bu
- 节点解析错误:返回时意外的令牌
- Bluebird承诺库的结果作为错误返回
- Jquery, php ajax post 500内部服务器错误返回
- 未定义的索引问题和错误返回
- 未从json文件中导入数据:Unhandled rejection错误返回
- Jquery错误返回bool值
- 表单提交后重新加载页面,尽管没有验证和错误返回
- 使用POST方法的AJAX函数会创建以下错误.错误:返回状态码414请求uri太大