我们正在使用Hapi构建Web服务。我们的路线有一些验证。我想知道在hapi回复客户端之前或之后是否有可能捕获或覆盖失败验证的默认回调。
我的(非工作)代码:
{
method: 'GET',
config: {
tags: tags,
validate: {
params: {
id: Joi.number()
.required()
.description('id of object you want to get'),
},
//Tried this, and it's not working:
callback: function(err, value) {
if (err) {
console.log('need to catch errors here!');
}
}
}
},
path: '/model/{id?}',
handler: function(request, reply) {
reply('Ok');
}
}
答案 0 :(得分:3)
您可以使用failAction
属性添加回调:
validate: {
params: {
id: Joi.number()
.required()
.description('id of object you want to get'),
},
failAction: function (request, reply, source, error) {
console.log(error);
}
}
有关详细信息,请参阅documentation:
failAction
- 确定如何处理无效请求。允许的值为:
'error'
- 返回错误请求(400)错误响应。这是默认值。'log'
- 记录错误,但继续处理请求。'ignore'
- 不采取任何行动。自定义错误处理函数,其签名为'function(request,reply,source,error)`其中:
request
- 请求对象。reply
- 继续回复界面。source
- 无效字段的来源(例如'path'
,'query'
,'payload'
)。error
- 为客户端响应准备的错误对象(包括error.data
下的验证函数错误)。
答案 1 :(得分:0)
正如我在API中看到的,这可能是使用failAction完成的:
failAction - 定义响应验证失败时要执行的操作。 选项包括:
- 错误 - 返回内部服务器错误(500)错误响应。这是默认值。
- log - 记录错误但发送响应。
failAction: function( source, error, next) {
// your code
}