Laravel 修改验证异常的响应格式实例代码详解
发布:smiling 来源: PHP粉丝网 添加日期:2022-03-09 08:51:21 浏览: 评论:0
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 无效的格式"
- ]
- }
- }
Tags: Laravel验证异常响应格式
- 上一篇:Yii 框架入口脚本示例分析
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)