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 相关文章推荐
php学习笔记之 函数声明(二)
Jun 09 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
sql注入与转义的php函数代码
Jun 17 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
Aug 03 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中文本操作的类
2007/03/17 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
jQuery 1.0.2
2006/10/11 Javascript
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
理解JS绑定事件
2016/01/19 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
详解Python中的动态属性和特性
2018/04/07 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
学生爱国演讲稿
2014/01/14 职场文书
经管应届生求职信范文
2014/05/18 职场文书
医院护士工作检讨书
2014/10/26 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
vscode内网访问服务器的方法
2022/06/28 Servers