我如何定制hapi.js中的validation错误响应?
在路由上使用config.validate选项,并且由于validation请求失败时,hapi会返回如下错误:
{ "statusCode": 400, "error": "Bad Request", "message": "child \"weight\" fails because [\"weight\" is required]", "validation": { "source": "payload", "keys": [ "weight" ] } }
有没有办法发送不同的格式化validation错误?
有两种方法来定制输出:
-
在
config.validate
使用failAction
属性:config: { validate: { params: { name: Joi.string().min(3).max(10) }, failAction: function (request, reply, source, error) { error.output.payload.message = 'custom'; return reply(error).code(400); } } }
-
使用
onPreResponse
扩展点:server.ext('onPreResponse', function (request, reply) { var response = request.response; if (response.isBoom && response.data.name === 'ValidationError') { response.output.payload.message = 'custom'; } return reply.continue(); });
有关更多详细信息,请参阅API文档 。