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 split汉字
Jun 05 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
php获取服务器信息的实现代码
Feb 04 PHP
php格式化金额函数分享
Feb 02 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
php进程间通讯实例分析
Jul 11 PHP
PHP7 新特性详细介绍
Sep 06 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
laravel框架的安装与路由实例分析
Oct 11 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 DataGrid 实现代码
2009/08/12 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
菜单效果
2006/10/14 Javascript
js 调整select 位置的函数
2008/02/21 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
python自动格式化json文件的方法
2015/03/11 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
Django和Flask框架优缺点对比
2019/10/24 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
主题酒店策划书
2014/01/28 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
大学学风建设方案
2014/05/04 职场文书
优秀班组长事迹
2014/05/31 职场文书
节约用水标语
2014/06/11 职场文书
中小学生学籍证明
2014/10/25 职场文书
安全学习心得体会范文
2016/01/18 职场文书
redis中lua脚本使用教程
2021/11/01 Redis