重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“如何解决Laravel 修改验证异常的响应格式”,在日常操作中,相信很多人在如何解决Laravel 修改验证异常的响应格式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决Laravel 修改验证异常的响应格式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联公司专注于周村企业网站建设,自适应网站建设,成都做商城网站。周村网站建设公司,为周村等地区提供建站服务。全流程按需开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务Laravel 默认验证不通过后响应格式如下,有时此格式并不满足自己要求,需要修改格式。
// status 422 { "message":"The given data was invalid.", "errors":{ "url":[ "url 无效的格式" ] } }
当 Request 验证失败时会抛出ValidationException
异常,最终交由全局异常Handler
类处理。Handler
继承自Illuminate\Foundation\Exceptions\Handler
,框架中的Handler
类调用render
处理异常并进行响应,针对于ValidationException
异常又调用了convertValidationExceptionToResponse
方法来处理。代码
protected function convertValidationExceptionToResponse(ValidationException $e, $request) { if ($e->response) { return $e->response; } return $request->expectsJson() ? $this->invalidJson($request, $e) : $this->invalid($request, $e); }
expectsJson()
区分是 ajax 请求还是表单请求,然后分别做处理。
protected function invalidJson($request, ValidationException $exception) { return response()->json([ 'message' => $exception->getMessage(), 'errors' => $exception->errors(), ], $exception->status); }
追踪到invalidJson()
,发现他就是用来处理参数验证异常响应格式的方法。在App\Exceptions\Handler
类中,重写invalidJson()
方法即可。
protected function invalidJson($request, ValidationException $exception) { return response()->json([ 'code' => 0, 'data' => $exception->errors(), ], $exception->status); }
最终,验证失败的响应格式如下
// status 422 { "code": 0, "data":{ "url":[ "url 无效的格式" ] } }
总结
到此,关于“如何解决Laravel 修改验证异常的响应格式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!