我在属性上有自己的自定义验证,并且我想返回400响应,该响应类似于在其他字段上返回的JOI.validation。这意味着除了错误和消息之外,我还希望返回验证属性 - 以便客户端可以知道要突出显示哪个字段。
所以,而不是这个
{
"statusCode": 400,
"error": "Bad Request",
"message": "phone validation error: invalid phone number"
}
我想回复此
{
"statusCode": 400,
"error": "Bad Request",
"message": "phone validation error: invalid phone number"
"validation": {
"source": "payload",
"keys": [
"phone"
]
}
如何在hapi回复中添加验证?
我一直这样做 - 这还没有发挥作用
e.validation =
{
source: "payload",
keys: [
"phone"
]
}
reply(Boom.badRequest(e));
我还假设我不能为Joi设置自定义验证器,否则我会扩展Joi。但是,是否有一个Joi验证错误类型或对象我可以在回复中使用,以便在我的响应中获得像对象结构一样的Joi。
顺便说一下,我的手机验证不是一个简单的正则表达式,并且有特殊情况所以我不能使用Joi内置的正则表达式验证器。答案 0 :(得分:0)
试试这个:
var errObj = Boom.badRequest(e);
errObj.validation =
{
source: "payload",
keys: [
"phone"
]
}
reply(errObj);
答案 1 :(得分:0)
如果你检查boom.badRequest('some message')返回的对象,你会得到:
{ data: null,
isBoom: true,
isServer: false,
output:
{ statusCode: 400,
payload:
{ statusCode: 400,
error: 'Bad Request',
message: 'some message' },
headers: {} },
reformat: [Function] }
所以你实际上需要做一些像
这样的事情var errObj = Boom.badRequest(e);
errObj.output.payload.validation =
{
source: "payload",
keys: [
"phone"
]
}
reply(errObj);