Laravel 修改验证异常的响应格式实例代码详解


Posted in PHP onMay 25, 2020

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 修改验证异常的响应格式的代码详解的文章就介绍到这了,更多相关Laravel异常响应格式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
BBS(php & mysql)完整版(一)
Oct 09 PHP
PHP中的日期及时间
Nov 23 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
php ios推送(代码)
Jul 01 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
php短信接口代码
May 13 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 PHP
tp5.1 框架查询表达式用法详解
May 25 #PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 #PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 #PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 #PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 #PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 #PHP
php7 错误处理机制修改实例分析
May 25 #PHP
You might like
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python解析xml模块封装代码
2014/02/07 Python
Python解析json文件相关知识学习
2016/03/01 Python
Python的标准模块包json详解
2017/03/13 Python
python文件拆分与重组实例
2018/12/10 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python绘制高斯曲线
2021/02/19 Python
Java如何获得ResultSet的总行数
2016/09/03 面试题
考试退步检讨书
2014/01/15 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
《乌塔》教学反思
2014/02/17 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers