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 将excel导入mysql
Nov 09 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
10条PHP高级技巧[修正版]
Aug 02 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
May 23 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
Python使用turtule画五角星的方法
2015/07/09 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python实现websocket的客户端压力测试
2019/06/25 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Python sep参数使用方法详解
2020/02/12 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
Python 多进程原理及实现
2020/12/21 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
乌克兰在线药房:Аптека24
2019/10/30 全球购物
运动会入场解说词300字
2014/01/25 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
丽江古城导游词
2015/02/03 职场文书
七年级数学教学反思
2016/02/17 职场文书
浅谈Python中的正则表达式
2021/06/28 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
使用javascript解析二维码的三种方式
2021/11/11 Javascript
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript