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 smarty模版引擎中变量操作符及使用方法
Dec 11 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
php实现概率性随机抽奖代码
Jan 02 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
apache php mysql开发环境安装教程
Jul 28 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 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
基于header的一些常用指令详解
2013/06/06 PHP
php简单实现MVC
2015/02/05 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python的类实例属性访问规则探讨
2015/01/30 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
Python中http请求方法库汇总
2016/01/06 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
pip命令无法使用的解决方法
2018/06/12 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
群众对十八届四中全会的期盼
2014/10/17 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python