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安全配置详细说明
Sep 26 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
分享PHP守护进程类
Dec 30 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
laravel 数据验证规则详解
Oct 23 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中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
详解Bootstrap插件
2016/04/25 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
python获取远程图片大小和尺寸的方法
2015/03/26 Python
深入了解Python数据类型之列表
2016/06/24 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
三维科技面试题
2013/07/27 面试题
安全施工责任书
2014/08/25 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
2015年国培研修感言
2015/08/01 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
解除合同协议书范本
2016/03/21 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers