我如何定制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错误?

       

网上收集的解决方案 "我如何定制hapi.js中的validation错误响应?"

有两种方法来定制输出:

  1. 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); } } } 
  2. 使用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文档 。